javascript - 动态启用/禁用调试代码

标签 javascript ajax debugging dynamic

我正在编写一个大小合适的 JavaScript 动画库,我想在其中包含调试代码。我可以轻松地进行检查:

if(myLib.debugger){
   console.warn('warning message');
}

但是,如果每秒运行几千次,最终会导致性能问题。在整个代码中添加更多检查,效果会更加明显。

我想知道是否可以检查 onload 是否应该启用调试器,如果是的话......请像这样:

//debugger if(!this.name) console.warn('No name provided');

进入:

if(!this.name) console.warn('No name provided');

如果未启用,则对代码进行注释;如果已启用,则取消注释,从而消除任何可能的性能问题。如果通过 ajax 加载,是否可以在整个脚本上使用正则表达式来完成此操作?我试图避免需要相同代码的两个版本:lib.dbug.js 和 lib.js。

跨浏览器兼容性对此并不重要(我真的只担心新浏览器),我认为拥有该项目很好。然而,如果可能的话,那将是一件很棒的事情。

任何见解将不胜感激。

最佳答案

执行此操作的最简单方法是检查是否应禁用调试器,如果是,请将其替换为在脚本开头不执行任何操作的模拟对象:

if (!myLib.debugger) {
    window.console = (function () {
        var newConsole = {};
        var key;

        for (key in window.console) {
            if (typeof window.console[key] === 'function') {
                newConsole[key] = function () {};
            }
        }

        return newConsole;
    }());
}

这种方法的开销应该可以忽略不计。

关于javascript - 动态启用/禁用调试代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18406311/

相关文章:

c - 为什么 Valgrind 在错误的地方给出错误?

javascript - 正则表达式 - 如何匹配匹配和不匹配模式的所有字符组?

javascript - Google map API - 如何检查浏览器兼容性?

javascript - 如何从 iframe 内部捕获 iframe resize 事件(iframe 和页面 - 同一域)

android - 是否可以检测到 Android 设备上的 USB 调试?

c# - native 代码的调试

javascript - jquery 动画效果有问题

ajax - Sencha ExtJS。无法使用 Ext.Ajax.request 跨域发送 POST 请求

jquery - 按标题属性排除 anchor 。 - Ajax

javascript - Node.js AJAX 文件 uploader