我正在使用Hoptoad来获取我的JavaScript的错误报告,最近我得到了这个错误:
重新声明var console
回溯不是很有用:
internal: :
:0:in `{anonymous}()'
,我知道它发生在"Mozilla/5.0 (X11;U;Linux x86_64;应用;rv:1.9.2.16) Gecko/20110323 Ubuntu/10.10 (maverick) Firefox/3.6.16",但我不知道控制台将如何重新声明。你有什么主意吗?下面是我如何声明console:
if (typeof console == "undefined") {
var console = {
log: function() {
}
};
}
不能有条件地声明变量。在执行任何代码之前,将解析声明并将其作为激活对象的属性添加。你的代码相当于:
var console;
if (typeof console == "undefined") {
console = {
log: function() {
}
};
}
这也被称为"提升"(不是我喜欢的术语),因为声明被有效地"提升"到函数的顶部或任何其他代码之上。
在同一个函数或作用域中多次声明一个变量是无害的,但它可能表明对作用域的误解(例如期望块作用域)或无意中重用标识符。
请编辑此部分以确认或否认:
方法是重新定义window.console:
if (typeof window.console == "undefined") {
window.console = {
log: function() {
}
};
}