1 2 3 4 5 6 7 8 9 | var foo = {n:1}; ( function (foo){ var foo; console.log(foo.n); foo.n = 3; foo = {n:2}; console.log(foo.n); })(foo); console.log(foo.n); |
为什么输出是1 2 3
在函数里面也定义了一个foo
那么变量提升,在函数内部的第一行应该就是var foo;
此时foo为undefined
那么输出也是undefined才是啊