var控制台的重新声明

时间:2011-04-21 04:46:38

标签: javascript console hoptoad redeclaration

我正在使用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(特立独行)Firefox / 3.6.16”但我可以'弄清楚如何重新声明控制台。你有什么想法?这是我如何声明控制台:

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

1 个答案:

答案 0 :(得分:4)

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

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

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

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

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

这样做的方法是重新定义window.console:

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