我正在使用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() {
}
};
}
答案 0 :(得分:4)
您无法有条件地声明变量。在执行任何代码之前,将解析声明并将其添加为激活对象的属性。您的代码相当于:
var console;
if (typeof console == "undefined") {
console = {
log: function() {
}
};
}
这也被称为“吊装”(不是我喜欢的术语),因为声明被有效地“提升”到函数的顶部或高于任何其他代码。
在同一函数或作用域中多次声明变量是无害的,但它表明可能存在对范围的误解(例如,期望块范围)或无意中重用标识符。
请编辑此项以确认或拒绝此部分:
这样做的方法是重新定义window.console:
if (typeof window.console == "undefined") {
window.console = {
log: function() {
}
};
}