var i = 0;
function a(){
console.log(i);
var i=1;
console.log(i)
}
a();
在执行js前,会对var和function做预解析
当函数a执行时,它的执行环境中有i声明,所以不会使用作用域链上的全局变量i,这个i是初始化了,但是不用它.
当运行第一个log(i)时,变量在函数体内始终是可见的,所以i提前隐式声明为 var i = undefined,log(i)为 undefined
var i = 0;
function a(){
console.log(i);
var i=1;
console.log(i)
}
a();
在执行js前,会对var和function做预解析
当函数a执行时,它的执行环境中有i声明,所以不会使用作用域链上的全局变量i,这个i是初始化了,但是不用它.
当运行第一个log(i)时,变量在函数体内始终是可见的,所以i提前隐式声明为 var i = undefined,log(i)为 undefined
转载于:https://www.cnblogs.com/starweb/archive/2012/12/24/2831606.html