修复未捕获的ReferenceError

时间:2013-05-31 15:00:40

标签: javascript

修复 Uncaught ReferenceError 的一般解决方案是什么。

我正在创建一个函数来确保调试代码投入生产。但是可能存在变量不存在但调试代码仍然存在的情况。在这种情况下,它不应该停止js。

function debug(data, type){
    if(type == 'alert' && mode !== 'production'){
      alert(data);
    }
    else if(type == 'halt' && mode !== 'production'){
      debugger;
    }
    else{
      console.debug(data);
    }
}

debug(xyz) //xyz doesn't exists

2 个答案:

答案 0 :(得分:2)

您应该避免在生产中运行调试代码。

最好是有一个删除它的构建过程,但是包装调试调用的简单标志也可以。

window.DEBUG = true;

//...

if (DEBUG) {
    debug(xyz) //xyz doesn't exist... and it won't matter when DEBUG === false
}

这比在整个地方测试未声明的变量更清晰。

毕竟,调试的一部分是发现对未声明变量的意外访问。因此,在调试时,我们应该希望看到那些ReferenceErrors,以便我们可以修复它们。

答案 1 :(得分:0)

try{
 if(Debug){
    debug(data,code)
 }
}
catch{
// swallow or do whatever you want
}