求解答为什么结果是undefind

为什么 b in window 是true呀,if中的var b是可以在全局找到吗?

img

这个属于使用var声明变量的特性:
1、var声明的变量的作用域是函数作用域;
2、声明提升,即var声明的变量,会把变量声明提升到函数作用域的顶部
所以可以在window中找到

等价于
var b;
if(!(b in window))
b=1
console.log(b)

调用之后变量随即被销毁,所有b为undefined

变量提升 现在window终时声明 没有进入判断条件 结果 undefined