我不是 JavaScript 专家,但我发现了一些这样的代码
a();
function a(){
alert('a');
}
我很惊讶地发现它有效(我认为这样的东西在 Python 中不起作用)。我预计该函数a
在创建之前无法执行。解释器如何工作以及为什么可以在声明之前调用函数?
我不是 JavaScript 专家,但我发现了一些这样的代码
a();
function a(){
alert('a');
}
我很惊讶地发现它有效(我认为这样的东西在 Python 中不起作用)。我预计该函数a
在创建之前无法执行。解释器如何工作以及为什么可以在声明之前调用函数?
这是由于可变提升而发生的。有关更多信息,请参阅此答案
关于此的一些文档: https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var#var_hoisting
如果你这样键入它,它将不起作用:
a();
a = function(){
alert('a');
}
这是因为函数 a() 是通过函数声明语法声明的,并且函数声明是在脚本解析后立即执行的。使用其他语法,函数表达式,如下所示:
var b = function(){
alert('b');
}
它不起作用(参见示例)。
更多信息:http: //javascriptweblog.wordpress.com/2010/07/06/function-declarations-vs-function-expressions/