为什么JSlint会返回"意外".'." 错误

dug*_*tov 5 javascript jslint

当我通过jslint运行此代码时

(function () { return "helloooo"; }).call();
Run Code Online (Sandbox Code Playgroud)

它给了我以下错误:

出乎意料的'.'.

这是为什么?

当我将函数赋值给变量,然后调用它时我没有错误.

这个:

var cb = function () { return "helloooo"; };
cb.call();
Run Code Online (Sandbox Code Playgroud)

不返回任何错误.

但是,我想知道为什么我首先得到错误.道格拉斯·克罗克福德的神圣规则我打破了第一个例子吗?

Ibr*_*jar 1

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

对于这种情况,Crockford 建议:

(function () { return "helloooo"; }())
                                   ^^
                          Notice how is the function being called
Run Code Online (Sandbox Code Playgroud)

因此 JSLint 不会期望右括号后有任何内容,这就是为什么它说它不期望.您使用的来调用call().

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