如果无序定义函数,Jslint将调出错误。
显然jslint很严格,但我想知道将函数整理好是否有任何好处。
我的意思是在他们被召唤之前定义它们。
答案 0 :(得分:2)
函数定义(和var
语句)被提升到其闭包的顶部。换句话说,代码的执行顺序与您编写的顺序不同。
现在,没有什么比在行末尾的;
更加“错误”,但jsLint旨在测试代码的人类 - 可读性。跳转不是人类可读的,所以它被认为是无效的。
答案 1 :(得分:1)
取决于
这将成功:
var x = y();
function y() { return 9; }
但这会失败:
var x = y();
var y = function() { return 9; };
当解释第一个脚本时,它将看到function y
并将在整个范围内使该功能可用(在该示例中为全局范围)。
而对于第二个示例,函数被分配给y
。就像任何其他变量一样,顺序很重要。
答案 2 :(得分:1)
如果在调用函数之前定义函数,则代码可以由一个传递编译器处理,否则,您需要一个多传递编译器(通常较慢)。
也许有一些通过JavaScript编译器(但是,我不知道)。
我一直认为JSLint会显示错误,因为它希望确保您的代码能够在一次成功编译器中成功运行