0

我正在使用别人的所见即所得编辑器代码,但 JSlint 说有两个错误。我想知道是否有人可以帮助解释/修复它们。

这是代码:http: //jsfiddle.net/sCATj/40/

JSlint 说的错误是:

Error:
Problem at line 3 character 40: Expected '{' and instead saw 'return'.
if (!(array instanceof Array)) return;

Problem at line 4 character 25: Cannot set property 'first' of undefined

我不知道jquery。我应该只放一个}而不是返回吗?

4

2 回答 2

4

JSLint 是一个 Lint,而不是一个普通的语法检查器。

它要求所有if语句都与而不是语句相关联

这是有效的 JavaScript:

if (foo)
    return something; 

这是更易于维护的 JavaScript(并且 JSLint 要求):

if (foo) {
    return something;
}

主要原因是,如果稍后编辑代码以添加另一个语句,编辑器可能不会注意到大括号丢失并执行以下操作:

if (foo)
    bar = foo;
    return something;

这给出了相同的结果:

if (foo) {
    bar = foo;
}
return something;

而不是想要的:

if (foo) {
    bar = foo;
    return something;
}

避免捷径(尤其是那些有条件的捷径(如果只有一个语句,可以省略大括号))是一种防御编程形式,可以减少引入的错误的变化。

于 2012-11-01T15:59:50.927 回答
0

从技术上讲,如果块内只有一个语句,您可以省略花括号if

您可以放心地忽略此“错误”。

于 2012-11-01T15:57:37.660 回答