当我通过jslint运行这段代码时
(function () { return "helloooo"; }).call();
它给了我以下错误:
意外的'.'。
这是为什么?
当我将函数分配给变量,然后调用它时,我没有收到任何错误。
这个:
var cb = function () { return "helloooo"; };
cb.call();
不返回任何错误。
但是,我想知道为什么我首先会出错。我用第一个例子打破了道格拉斯·克罗克福德的什么神圣规则?
当我通过jslint运行这段代码时
(function () { return "helloooo"; }).call();
它给了我以下错误:
意外的'.'。
这是为什么?
当我将函数分配给变量,然后调用它时,我没有收到任何错误。
这个:
var cb = function () { return "helloooo"; };
cb.call();
不返回任何错误。
但是,我想知道为什么我首先会出错。我用第一个例子打破了道格拉斯·克罗克福德的什么神圣规则?
这不是一件坏事。JSLint 固执己见,Crockford 认为当您在括号内使用函数表达式时,您应该直接调用该方法或将其分配给变量,因为其他人查看它可能会混淆函数的值和函数作为一个价值本身。
对于这种情况,Crockford 建议:
(function () { return "helloooo"; }())
^^
Notice how is the function being called
所以 JSLint 在右括号之后不期望任何东西,这就是为什么它说它不期望.
你用来调用的call()
.
您可以查看Javascript 编程语言的代码约定 (由 Crockford 编写)以了解更多信息,特别是查找有关函数的部分。