javascript - 使用ES模块时是否隐含 'use strict'?

标签 javascript

我在学习 JS 时遇到了“use strict”。然后,这里Should I 'use strict' for every single javascript function I write? @Bergi 说“你只应该在模块范围内放置'use strict' - 每个文件一次 - 以便它被你的所有函数继承”。 “它被你所有的函数继承”是否意味着某个模块中的每个函数在其自身内部使用“use strict”?

最佳答案

Is it true that by "it is inherited by all your functions" means each function in a certain module uses 'use strict' inside of itself?

如果出现以下情况,函数将以严格模式运行:

(1) 该函数在 ES6 模块中(无论如何都在严格模式下运行),或者

(2) 在函数定义之上有一个正确的'use strict' 指令,词法

除了一些不太常见的实例,例如在 constructor 中。

'use strict' 的词法继承方式与引用变量的方式以及变量作用域的工作方式相同 - 如果函数的任何外部 block 是严格的,则内部函数也是严格的以及。因此,例如,使用以下代码:

'use strict';
function foo() {
  function bar() {
    function baz() {
    }
  }
}

无论您在 foobarbaz 中放入什么其他代码,所有 这些函数,无论它们如何运行,都将以严格模式运行。如果从一个不是在严格模式下运行的源调用这些函数中的一个,被调用的函数仍将在严格模式下运行。例如:

<script>
'use strict';
function foo() {
  return function bar() {
    return function baz() {
      console.log('baz running. strict:', this === undefined);
    }
  }
}
foo()()();
</script>
<script>
// Non-strict script calling strict function:
foo()()();
</script>

关于javascript - 使用ES模块时是否隐含 'use strict'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60542821/

相关文章:

javascript - Windows 8 html/js : Alternative to <img>/removing the 'dragging' functionality?

JavaScript 字符编码 + Internet Explorer 9 编码

javascript - 基本 Javascript 密码生成器

javascript - Angular 5 - 取消选中所有复选框功能不影响 View

javascript - CSS动画汉堡包图标并删除滚动类?

javascript - 单选按钮 'disappearing'

javascript - 定位并换行小数点后的第 3 位数字

javascript - HTML5 Canvas Base64 错误

javascript - AWS javascript SDK多文件上传进度条

javascript - 控制莫里斯圆环图尺寸高度宽度