【发布时间】:2011-08-26 14:01:56
【问题描述】:
我在 MDC 或 ECMAscript 规范上找不到任何关于我的问题的信息。可能有人知道一个更“hacky”的方法来解决这个问题。
我正在对我环境中的每个 javascript 文件调用 "use strict"。我所有的文件都是这样开始的
(function(win, doc, undef) {
"use strict";
// code & functions
}(window, window.document));
现在,我有一个处理错误的自定义函数。该函数使用.caller 属性来提供上下文堆栈跟踪。看起来像这样:
var chain = (function() {
var _parent = _error,
_ret = '';
while( _parent.caller ) {
_ret += ' -> ' + _parent.caller.name;
_parent = _parent.caller;
}
return _ret;
}());
当然,在严格模式下.caller 是一个不可删除的道具,在检索时会抛出。所以我的问题是,是否有人知道 disable 更严格“功能方面”的方法?
"use strict"; 在被调用后被所有函数继承。现在我们可以通过调用顶部的"use strict"; 来在特定函数中使用严格模式,但是有没有办法实现相反的效果?
【问题讨论】:
-
您可以使用全局 eval 破解它以绕过严格模式
-
如果其他人需要知道这是怎么一回事:What does use strict do
-
我几乎希望这样的事情不存在。 “使用严格”的想法是向后兼容的选择加入策略。我不确定我是否喜欢向前向后兼容的想法,我们允许代码选择加入,然后允许代码的子部分再次选择退出。
-
你可以看这里>>just change .babelrc solution
标签: javascript ecmascript-5 ecma262 strict-mode