5

当我通过jslint运行这段代码时

(function () { return "helloooo"; }).call();

它给了我以下错误:

意外的'.'。

这是为什么?

当我将函数分配给变量,然后调用它时,我没有收到任何错误。

这个:

var cb = function () { return "helloooo"; };
cb.call();

不返回任何错误。

但是,我想知道为什么我首先会出错。我用第一个例子打破了道格拉斯·克罗克福德的什么神圣规则?

4

1 回答 1

1

这不是一件坏事。JSLint 固执己见,Crockford 认为当您在括号内使用函数表达式时,您应该直接调用该方法或将其分配给变量,因为其他人查看它可能会混淆函数的值和函数作为一个价值本身。

对于这种情况,Crockford 建议:

(function () { return "helloooo"; }())
                                   ^^
                          Notice how is the function being called

所以 JSLint 在右括号之后不期望任何东西,这就是为什么它说它不期望.你用来调用的call().

您可以查看Javascript 编程语言的代码约定 (由 Crockford 编写)以了解更多信息,特别是查找有关函数的部分。

于 2013-10-15T10:46:35.077 回答