我目前正在开发一个依赖arguments.callee.caller
的lib。这与"use strict"
不兼容,因此在严格模式下定义调用函数时会抛出错误。我抓住那些错误,它们并不重要,因为重要部分没有在严格模式下定义。是否存在仅支持严格模式的环境,因此与此lib不兼容?
答案 0 :(得分:1)
答案 1 :(得分:0)
任何现代JS环境在certain ES6 contexts的上下文中始终具有严格模式。即:
- 模块代码始终是严格的模式代码。
- ClassDeclaration 或 ClassExpression 的所有部分都是严格模式代码。
当然,如果你想成为未来的证据,这里真正的答案是不要使用arguments.callee.caller
。
但是如果你想避免严格的模式限制,你可以直接使用命名函数访问Function.caller。这是非常沮丧的,因为它是一个非标准的功能。