下面的片段有什么区别?
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(使用前将#替换为@)