我希望在调试模式(未经编辑和非捆绑的脚本)中运行我的应用时提供其他控制台日志。有没有一种简单的方法可以在脚本中检测到这一点?
我正在考虑使用一个带有长参数名称的函数,然后获取该函数的字符串表示,检查该参数是否具有此长名称,或者在缩小期间是否更改为更短版本(因为minifiers会这样做)。
有更好,更简单的方法吗?
我想避免一种情况,即我将全局变量设置为特定值,然后忘记在部署期间重置它。我想要一些可以消除人为错误的防弹措施。
答案 0 :(得分:0)
您检查一些源代码长度的想法是可行的。
但是,更传统的方法是将您的全局变量/环境配置外部化为您在开发/生产期间包含的单独文件:
在开发中,您的应用程序默认包含env.dev.js.在缩小生产期间,您将包含env.js。
答案 1 :(得分:0)
正如问题所述,这是我一直在考虑的解决方案,并且工作做得很好。只要缩小算法还缩小了函数名称和参数,此检测将按预期工作。
window.debugging = (function detect(undefined) {
// has function itself been renamed?
if (!detect) return false;
// has parameter been renamed?
return /function\s\w+\((\w*)\)/i.exec(detect.toString())[1] === "undefined";
})();
并且它们具有在以下代码中使用的函数:
var debuglog = (function() {
if (debugging === true)
{
return console.log;
}
return function() { return; };
})();
如果它只是一个函数,它也可以包含在原始检测函数中,因此它不会返回true / false,而是返回console.log
重定向函数或无操作函数。