Javascript 有序功能防御|效益

Javascript 有序功能防御|效益,javascript,Javascript,如果函数的定义顺序不正确,Jslint将调用错误 显然jslint是严格的,但我想知道将函数按顺序排列是否有好处 我的意思是在调用它们之前定义它们。函数定义(和var语句)被提升到闭包的顶部。换句话说,代码的执行顺序与您编写的不同 现在,没有什么比省略更“错误”的了位于行的末尾,但jsLint旨在测试代码的可读性。跳转不是人类可读的,因此被认为是无效的。函数定义(和var语句)被提升到闭包的顶部。换句话说,代码的执行顺序与您编写的不同 现在,没有什么比省略更“错误”的了位于行的末尾,但jsLin

如果函数的定义顺序不正确,Jslint将调用错误

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

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

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

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

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

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

视情况而定

这将成功:

var x = y();

function y() { return 9; }
但这将失败:

var x = y();

var y = function() { return 9; };
解释第一个脚本时,它将看到
函数y
,并使该函数在其整个范围内可用(在该示例中为全局范围)

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

视情况而定

这将成功:

var x = y();

function y() { return 9; }
但这将失败:

var x = y();

var y = function() { return 9; };
解释第一个脚本时,它将看到
函数y
,并使该函数在其整个范围内可用(在该示例中为全局范围)


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

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

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


我一直认为JSLint显示了这个错误,因为它希望确保代码能够在单过程编译器中成功运行

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

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


我一直认为JSLint显示了这个错误,因为它希望确保您的代码能够在一个单过程编译器中成功运行

对我来说,可读性意味着……将函数定义分组在逻辑组中。,这并不总是与在调用它们之前定义它们相关。提升并不意味着像
var myfunc=function(){}
这样的东西位于顶部。它只会将
var myfunc
移动到顶部。因此,如果您试图在分配函数之前调用它,它仍然会失败。可读性对我来说意味着…将函数定义分组在逻辑组中。这并不总是与调用函数之前定义的函数相关。提升并不意味着类似于
var myfunc=function(){}
的内容位于顶部。它只会将
var myfunc
移动到顶部。所以,如果你试图在它被分配之前调用它,它仍然会失败。有趣的是…所以你不确定js是否有一次编译?是的,我还没有做过这方面的研究。但如果有这些编译器,我一点也不惊讶。有趣的是……所以你不确定js是否有一次性编译?对,我还没有做过这方面的研究。但如果有这些编译器,我一点也不感到惊讶。