JS中变量的作用域
发表评论»昨天看到一个有关JS中变量作用域的讨论,其实很久没有这么关注这类细节基础的问题了。现在学东西都直接到应用层面,可能以前刚开始学什么C,C++的时候还去钻过些牛角尖,现在基本上没有了~“`不过这个问题,我出错了。看看这个问题吧,以下是JS源码。
var a = "http://www.wondger.com";
function myFunction(){
alert(a); //①
var a = "a in function";
alert(a); //②
}
myFunction();
你觉得执行结果应该是什么?
正确结果是依次弹出警告框:“undefined”,“a in function”。
我一直以为应该是:“http://www.wondger.com”,“a in function”,因为①处,按照我的理解,应该还是引用的全局变量a,但是事实上却输出了“undefined”,为什么呢?原来函数内的局部变量会在所有代码执行前先完成对变量的声明。即以上代码可以这样理解:
var a = "http://www.wondger.com";
function myFunction(){
var a;
alert(a); //①
a = "a in function";
alert(a); //②
}
myFunction();
这样一来疑问就解决了,哎,诡异呀~···
暂时还没有评论