var b = 3;
(function(){
b = 5;
var b = 2;
})();
console.log(b);
立即执行函数内部,var发生变量提升,结果相当于 (function(){ var b; b=5; b=2; })()
所以这个立即执行函数并没有改变全局环境中的b,所以全局环境中的b依旧是3。
立即执行函数,执行完毕后会立即销毁,所以立即执行函数内部的变量b就被回收了,但是全局变量b不会被回收,所以console.log输出的就是全局变量b=3
自执行函数内部因为有var声明的存在,b相当于是私有作用域内的赋值,倘若没有var,b的赋值会是全局作用域下。能在外部输出。
函数 && 变量重新申明
有var重新声明——函数内部使用的是“自身”的变量,对变量的改变并不影响外部
没有var重新声明——函数内部使用的是外部的变量,对变量的改变影响外部
标签:输出,函数,下面,内部,代码,立即,var,执行,变量 From: https://www.cnblogs.com/longmo666/p/17823861.html