javascript - IE 8 变量作用域错误

标签 javascript global

在 IE 8 中,第二个版本会导致以下错误:

Object doesn't support this property or method.

错误在map = new L.Map。在第一个版本中,没有错误。

我想如果你不包含 var 它会自动进入全局范围。为什么在IE 8中会出现错误?请注意,这不会发生在 IE 9 中。

var map;
jQuery(document).ready(function() 
{
    map = new L.Map('map', {'scrollWheelZoom': false});
 ...
}

对比:

jQuery(document).ready(function() 
{
    map = new L.Map('map', {'scrollWheelZoom': false});
 ...
}

最佳答案

I thought if you don't include var it automatically goes to global scope.

这是非常糟糕的做法,因为无法判断您是否有意这样做。它还会在严格模式下导致错误。

当文档中有一些名为 map 的元素时,它也会在 IE 中导致错误。

您可以像这样显式地创建一个全局变量:

jQuery(document).ready(function() {
    window.map = new L.Map('map', {
        'scrollWheelZoom': false
    });
});

在这里你明确了你的意图,不会得到这个错误。


以下是演示它的 jsfiddles(在 IE8 或更低版本中运行):

http://jsfiddle.net/3Jn5N/作品

http://jsfiddle.net/3Jn5N/1/不工作

关于javascript - IE 8 变量作用域错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11722058/

相关文章:

c - 为什么不能将注册变量设置为全局变量?

javascript - 如何访问foreach语句中的选择器?

javascript - JavaScript 中像 `apples: 5` 这样的行有什么作用?

php - 我需要一个全局范围内的 PHP 对象。我该怎么做,或者有更好的方法吗?

C++ 静态局部函数与全局函数

python - 分包导入或全路径差

python - 蓝图中的 Flask 应用程序对象

javascript - 客户 Accordion ,不使用 jquery ui

javascript - div 在使用 jquery .hover() 时闪烁

javascript - 从 iframe 中的 src 中删除页眉和页脚