先看一下代码:
//全局变量
var gloabalScope = "gloabalScope";
var scopeFunction = function(){
console.log(gloabalScope);
var gloabalScope = "localScope";
console.log(gloabalScope);
}
那么以上程序的输出是什么呢?
gloabalScope
localScope
上述的输出出乎意料的是错误的,我们都知道JavaScript会查找全局变量并且使用,那么这里为什么不是这个输出呢?
原因是JavaScript函数的执行会先进行词法分析,在解析函数的时候它发现了我们使用的变量"gloabalScope",那么它就会将此变量添加到作用域链中。在执行函数的时候发现了此变量未定义,所以输出是:
undefined
localScope