JavaScript 提升解释

2024-05-19

下面的片段有什么区别?

var a = 0;
function b(){
    a = 10;
    return function a(){};
}
b();
console.log(a);  // => 10

and

var a = 0;
function b(){
    a = 10;
    return
    function a(){};
}
b();
console.log(a);  // => 0

它与 JavaScript 提升有关,但我对这个概念的理解给出了完全相反的输出。


return function a(){};

Here function ...是一个表达式。 A命名函数表达式准确地说。这a这里并不重要,它只是给匿名函数一个.name https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name,但它仍然只是您返回的函数表达式。

return 
function a(){};

这里相当于:

return;
function a(){};

Here function a是一个声明,而不是一个表达式。它被举起,创造了当地的名字a在范围内,遮蔽外部a。 IE。它相当于:

function b(){
    var a = function () {};
    a = 10;
    return;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript 提升解释 的相关文章