你见过这种奇怪的IE JavaScript行为/ bug吗?

前端之家收集整理的这篇文章主要介绍了你见过这种奇怪的IE JavaScript行为/ bug吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
好吧,这让我抓狂:

第一个例子,没问题:

<script>

window.myvar = 150;

if (false) {
  var myvar = 3;
}

// This will popup "150"
alert(myvar)

</script>

现在,使用两个脚本元素:

<script>

window.myvar = 150;

</script>

<script>

if (false) {
  var myvar = 3;
}

// This will popup "undefined"
alert(myvar)

</script>

用IE8测试.

你知道为什么吗?

解决方法

在第二个示例中,在第二个脚本块中,myvar已经是 hoisted(根据规范)到包含范围的顶部.记住JavaScript没有块范围,只有函数范围.

因此,当myme在VariableObject上查找myvar时,var myvar(被解释的提升定义)将导致myvar未定义.

原文链接:https://www.f2er.com/js/149838.html

猜你在找的JavaScript相关文章