1

如果函数定义无序,Jslint 将调用错误。

显然 jslint 是严格的,但我想知道按顺序排列函数是否有任何好处。

我的意思是在调用它们之前定义它们。

4

3 回答 3

2

函数定义(和var语句)被提升到其闭包的顶部。换句话说,代码的执行顺序与您编写的顺序不同。

现在,没有什么比;在行尾省略更“错误”的了,但是 jsLint 旨在测试代码的人类可读性。跳转不是人类可读的,因此它被认为是无效的。

于 2012-08-20T21:43:47.543 回答
1

依靠。

这将成功:

var x = y();

function y() { return 9; }

但这会失败:

var x = y();

var y = function() { return 9; };

当第一个脚本被解释时,它会看到function y并且使该函数在其范围内可用(在该示例中是全局范围)。

而在第二个示例中,函数被分配给y. 就像任何其他变量一样,顺序很重要。

于 2012-08-20T21:47:35.837 回答
1

如果在调用之前定义函数,则代码可以由一次编译器处理,否则,您需要一个多次编译器(通常速度较慢)。

也许那里有一些一次性的 JavaScript 编译器(但是,我不知道)。

我一直认为 JSLint 显示该错误是因为它想确保您的代码可以在一次性编译器中成功运行

于 2012-08-20T21:55:46.137 回答