我尝试在我的脚本的第一行设置一个变量,以便稍后可以访问它(并检查它是否未定义。代码的基本要点是:
var map;
var mapIsVisible = false;
console.log(map);
function clearMap() {
if(map != undefined) {
map.clear();
}
}
clearMap();
所以在FF中,它完美无缺。没有任何错误。 Chrome会抛出错误消息:
Uncaught TypeError: Object #<HTMLDivElement> has no method 'clear'
这导致我在变量实例化之后执行console.log,我得到的是HTMLDivElement。为什么FF返回undefined而Chrome表示HTMLDivElement显然不是?或者chrome是否将您设置的所有变量设置为没有任何类型的变量?
我现在的解决方法是明确说地图是未定义的:
var map = undefined;
我的脚本效果很好。我想知道的是为什么Chrome会发生这种情况
修改 正如答案中所说,我有一个id为“map”的元素。我不知道他们为此自动添加了JS变量。
答案 0 :(得分:2)
您的网页上可能有<div id="map">
,Chrome认为您使用您使用的“地图”变量来引用它。
答案 1 :(得分:1)
我的猜测是,您的网页上有一个元素,其中name
或id
属性为“地图”。我似乎记得id-ed元素自动成为Chrome中的全局JS变量。天知道为什么。