@H_
301_0@这么一来就懂了。
@H_
301_0@所以,这个问题的关键在于:var 声明会提前到作用域顶端,但附值却不会———好纠结的设定,不知道为什么要这么搞。个人觉得这是JS的一个缺陷。
@H_
301_0@现在有一种
代码习惯,主张把变量声明一律放在作用域前方,大概就是考虑到这个——反正就算你不写在前方,JS也会提前到前方。
@H_
301_0@现在放出文首问题的答案:
@H_
301_0@只会弹出两个alert,而if里面的alert不会执行,因为var声明的提前性,导致真正的
代码是这个样子:
@H_
301_0@
@H_
301_0@虽然aa为空,但用'aa' in window判断时会为真,因为a确实存在了,而值是undefined。所以if
代码不会执行。后面两个alert我就不说了。
@H_
301_0@个人感觉这是一个很无厘头的问题,我们应该了解他的原因,但鄙视他这种陷阱。
@H_
301_0@上面这个问题也是我写这篇
文章的缘由,这段
代码是我从一篇网文里看到的,但他里面没有答案,我百撕不得骑姐,跑到stackoverflow上去问了才搞清楚。答案就是这篇
文章。
@H_
301_0@但这是很基础的问题啊其实!!!
@H_
301_0@哈哈,原谅我,后面还有一个问题:
这也是一种声明变量的方式,那么,这段
代码会报错吗?为什么?