1、变量提升、函数提升: https://segmentfault.com/a/1190000014437648
1 var foo = {n:1}; //foo是引用类型的变量
2 (function (foo) {
3 console.log(foo.n); //原题中的第5行,由于存在变量提升,因此会在函数开始就声明,此时为undefined;然而由于一个变量的声明优先级低于形参,所以这行没有任何效果
4 foo.n=3;
5 var foo = {n:2};
6 console.log(foo.n);
7 })(foo);
8 console.log(foo.n);
函数体内部,局部变量的优先级比同名的全局变量高
var a = 3;
function test(){
console.log(a) //undefined 因为变量提升,所以局部变量a会先声明
var a = 4;
console.log(a) //4
}
网友评论