我在互联网上浏览时遇到了这个JavaScript函数
function foo(){
function bar() {
return 3;
}
return bar();
function bar() {
return 8;
}
}
console.log(foo());
=>8
真令人困惑,为什么该函数在被调用时返回8。我以为这段代码会耗尽函数的内容,停在return bar();
并返回3。我在这里缺少什么?
这是可变吊装的结果。function
定义先于其他。真的看起来像这样
function foo(){
var bar;
bar = function() {
return 3;
}
bar = function() {
return 8;
}
return bar();
}
“因为在执行任何代码之前都要先处理变量声明(和一般的声明),所以在代码中的任何地方声明变量都等同于在顶部声明它。” var MDN
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句