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