我刚刚读了Ben Cherry撰写的有关JavaScript范围和提升,他提供了以下示例:
var a = 1; function b() { a = 10; return; function a() {} } b(); alert(a);
使用上面的代码,浏览器将警告“ 1”。
我仍然不确定为什么它返回“ 1”。他说的一些事情让人想到:所有函数声明都被提升到顶部。您可以使用函数来限定变量的范围。仍然没有点击我。
功能提升意味着将功能移到其作用域的顶部。那是,
function b() { a = 10; return; function a() {} }
交涉者将对此进行重写
function b() { function a() {} a = 10; return; }
奇怪吗?
另外,在这种情况下,
function a() {}
表现与
var a = function () {};
因此,从本质上讲,这就是代码的作用:
var a = 1; //defines "a" in global scope function b() { var a = function () {}; //defines "a" in local scope a = 10; //overwrites local variable "a" return; } b(); alert(a); //alerts global variable "a"