首页 > 其他分享 >下面这段代码的输出是 3

下面这段代码的输出是 3

时间:2023-11-10 12:55:05浏览次数:35  
标签:输出 函数 下面 内部 代码 立即 var 执行 变量

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

相关文章