1

我正在使用 Hoptoad 来获取我的 JavaScript 的错误报告,最近我收到了这个错误:

重新声明 var 控制台

回溯不是很有用:

internal: :

:0:in `{anonymous}()'

我知道它发生在“Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.16) Gecko/20110323 Ubuntu/10.10 (maverick) Firefox/3.6.16”上,但我不知道如何重新声明控制台。你有什么想法?这是我声明控制台的方式:

if (typeof console == "undefined") {
  var console = {
    log: function() {
    }
  };
}
4

1 回答 1

4

您不能有条件地声明变量。在执行任何代码之前,声明被解析并添加为激活对象的属性。您的代码相当于:

var console;
if (typeof console == "undefined") {
  console = {
    log: function() {
    }
  };
}

这也称为“提升”(不是我喜欢的术语),因为声明被有效地“提升”到函数的顶部或任何其他代码之上。

在同一个函数或作用域中多次声明一个变量是无害的,但它表明可能对作用域的误解(例如,期望块作用域)或标识符的意外重用。

请编辑此内容以确认或拒绝此部分:

方法是重新定义window.console:

if (typeof window.console == "undefined") {
  window.console = {
    log: function() {
    }
  };
}
于 2011-04-21T06:25:42.790 回答