Javascript 是否有只支持严格模式的js环境?

Javascript 是否有只支持严格模式的js环境?,javascript,strict-mode,Javascript,Strict Mode,我目前正在开发一个lib,它依赖于参数.callee.caller。这与“use strict”不兼容,因此在严格模式下定义调用方函数时会引发错误。我发现了这些错误,它们其实并不重要,因为重要部分并没有在严格模式下定义。是否有一个环境只支持严格模式,因此与此库不兼容?任何现代JS环境在的上下文中都将始终具有严格模式。即: 模块代码始终是严格的模式代码 类声明或类表达式的所有部分都是严格的模式代码 当然,这里真正的答案是如果你想成为未来的证明,不要使用参数.callee.caller 但是,如

我目前正在开发一个lib,它依赖于
参数.callee.caller
。这与
“use strict”
不兼容,因此在严格模式下定义调用方函数时会引发错误。我发现了这些错误,它们其实并不重要,因为重要部分并没有在严格模式下定义。是否有一个环境只支持严格模式,因此与此库不兼容?

任何现代JS环境在的上下文中都将始终具有严格模式。即:

  • 模块代码始终是严格的模式代码
  • 类声明或类表达式的所有部分都是严格的模式代码
当然,这里真正的答案是如果你想成为未来的证明,不要使用
参数.callee.caller

但是,如果希望避免严格的模式限制,可以直接使用命名函数进行访问。这是非常不鼓励的,因为这是一个非标准特性

是否存在只支持严格模式的环境

您可以配置Node.js来完成此操作,请参见:


如果您想知道,可以使用命令行标志强制Node在严格模式下执行所有代码。您需要
.caller
做什么?@Bergi谢谢!我想知道类似的事情。:-)我使用调用者执行类似于
错误的操作。captureStackTrace(o,fn)
在非v8环境中执行:我当前测试
参数。callee.caller
执行优雅降级,但该测试不会通过严格模式捕获错误。我需要修改它。@Bergi是否有强制严格模式的非节点环境?或者是否至少有一个浏览器不支持arguments.callee.caller,但支持ES5?当前代码通过节点和chrome使用
Error.prepareStackTrace()
,因此它们不受影响。如果
参数.callee
未被各种lint工具捕获,我会感到惊讶。
node --use_strict