在 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 或更低版本中运行):
关于javascript - IE 8 变量作用域错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11722058/