js闭包的一个小疑点

js闭包的一个小问题如下 两段代码function a(){var b 1window.setTimeout(function(){//用定时器来触发

js闭包的一个小问题

如下 两段代码

function a(){var b = 1;window.setTimeout(function(){//用定时器来触发就不搞按钮啦alert(b);var b = 2;},3000);}a();


只差了一句,执行结果是什么样呢? 第一种,顺利弹出1

第二种确是 undefined

如何理解?


js会初始化用var 定义的变量导致第二个里边的b变量呗初始化局部变量,意思是b已经被释放了