javascript真的很强大,通常我们需要验证问题,直接在谷歌console控制台
遇到个奇葩问题if(!('a' in window)){
var a = 1;
}
console.log(a)// 答案是什么?
注意:a值undefined 为什么呢?
看下面的图就明白了
明白了吗?javascript引擎解析js时首先扫描var出来的变量,这些全局变量都是window的属性
所以出现var a,那么('a' in window)就是true,而if(!('a' in window)){
var a = 1;
} 取非后a值不会执行赋值运算,所以a值undefined
可以javascript引擎的扫描看成是预编译,但是java有块级作用域,这样写会报错的,js就不会了