var a = 10;
(function () {
console.log(a)
a = 5
console.log(window.a)
var a = 20;
console.log(a)
})()
这个代码会输出什么?答案是undefined , 10 , 20
为什么会是undefined呢?这里就是一个知识点匿名函数
匿名函数的作用:
模拟块级作用域,减少全局变量。执行完匿名函数,存储在内存中相对应的变量会被销毁,从而节省内存。再者,在大型多人开发的项目中,使用块级作用域,会大大降低命名冲突的问题,从而避免产生灾难性的后果。自此开发者再也不必担心搞乱全局作用域了。
也就是(function(){})()私有作用域,所以你在刚开始访问a的时候undefinde