var myVar;在Chrome中返回HTMLDivElement但在FF中没有?

时间:2011-05-05 17:51:12

标签: javascript firefox google-chrome

我尝试在我的脚本的第一行设置一个变量,以便稍后可以访问它(并检查它是否未定义。代码的基本要点是:

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变量。

2 个答案:

答案 0 :(得分:2)

您的网页上可能有<div id="map">,Chrome认为您使用您使用的“地图”变量来引用它。

答案 1 :(得分:1)

我的猜测是,您的网页上有一个元素,其中nameid属性为“地图”。我似乎记得id-ed元素自动成为Chrome中的全局JS变量。天知道为什么。