(function(){ var name = "123"; var age = 123; })(); console.log(name); console.log(age);
按照我的理解,name和age都是匿名函数块中的内容,因此无法读取!
但是在控制台中我得到了name的值,这是为什么?
猜想,可能是name这个变量是不是把什么全局的东西给改掉了。如果改变name的名字就没有问题.....匿名函数块中难道有一个叫做name的全局属性?
for(var p in window) { console.log(p); }
可以看到window存在一个名为name的成员
看了下,window确实有一个自己的name属性。
出现我那个错误原因是因为:
我第一次试验的时候,name没有加var,所以变成了全局变量,导致window.name被赋值
第二次,我修改了name前加上了var,但是清楚浏览器缓存,并没有改变window.name的属性。
因此导致此后不关闭浏览器的前提下,name都是第一次赋予的值!
非常感谢提醒.....