一个函数中的严格模式是否会影响它调用的函数?

Does strict mode in one function have an effect on a function it calls?

例如,我有这样的代码:

function test() {
  // some code
}

function main() {
  "use strict";
  test();
}

如您所见 - 在函数 main 中我启用了严格模式。

问题:这是在函数中启用严格模式test还是我需要为每个函数分别定义严格模式?

谢谢。

不,不是。严格模式是 scoped。所以只有 main 中的代码处于严格模式。

请注意,虽然严格模式是有范围的,但它的某些效果可以在严格模式代码之外看到。您的代码并非如此,但我想我应该提一下。 This question 及其更详细的答案。

不,因为 javascript 具有函数级作用域,现在 strict 仅限于函数 main。如果您希望它的范围适用于其他功能,您可以全局指定 "use strict"; 或单独为所需的功能指定它。

注意:全局指定它会影响所有函数。