0

我正在编写一个大小合适的 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 加载,这可以通过整个脚本上的正则表达式以某种方式完成吗?我试图避免需要相同代码的 2 个版本,lib.dbug.js 和 lib.js。

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

任何见解将不胜感激。

4

2 回答 2

2

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

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;
    }());
}

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

于 2013-08-23T15:18:48.097 回答
1

如果这是一个 JavaScript 库......那么我希望作为第 3 方开发人员,我可以下载/使用 2 个版本。生产版本(无调试,并且最小化)。如果我想调试,我会指向库的调试版本。

例如

<script src="foo-lib-min.js"></script>
<!-- swap to this for debugging <script src="foo-lib-full.js"></script>-->
于 2013-08-23T15:19:34.703 回答