如何在 Node.js 中解释“使用严格”语句?

2022-08-30 01:04:23

我已经开始探索Node.js并编写了许多演示Web应用程序,以了解Node.js,Express,.js,jade等的流程。

但是我最近遇到的一件事是,语句是每个函数和每个文件中的第一行。"use strict".js

Node.js究竟是如何解释的?


答案 1

"use strict";

基本上,它启用了严格模式。

严格模式是一项功能,允许您将程序或函数置于“严格”操作上下文中。在严格的操作上下文中,方法形式像以前一样将其绑定到对象。函数形式将其绑定到未定义的对象,而不是全局集对象。

根据您的评论,您告诉会有一些差异。但这是你的假设。Node.js代码只不过是你的JavaScript代码。所有 Node.js代码都由 V8 JavaScript 引擎解释。V8 JavaScript Engine是由Google为Chrome Web浏览器开发的开源JavaScript引擎。

因此,Chrome浏览器和Node.js的解释方式没有太大区别。"use strict";

请阅读JavaScript中的严格模式。

欲了解更多信息:

  1. 严格模式
  2. ECMAScript 5 浏览器中的严格模式支持
  3. 严格模式即将进城
  4. 严格模式的兼容性表
  5. Stack Overflow问题:在JavaScript中“使用严格”做什么以及它背后的原因是什么


ECMAScript 6:

ECMAScript 6 Code & strict mode.以下是规范的简要说明

10.2.1 严格模式代码

ECMAScript 脚本语法单元可以使用不受限制或严格模式的语法和语义进行处理。在以下情况下,代码被解释为严格模式代码:

  • 如果全局代码以包含使用严格指令的指令序幕开头,则全局代码为严格模式代码(请参阅 14.1.1)。
  • 模块代码始终是严格模式代码。
  • 类声明或类表达式的所有部分都是严格模式代码。
  • 如果 Eval 代码以包含使用严格指令的指令序幕开头,或者如果对 eval 的调用是包含在严格模式代码中的直接 eval(请参阅 12.3.4.1),则该 Eval 代码为严格模式代码。
  • 如果关联的函数声明、函数表达式、生成器声明、生成器表达式、方法定义或 ArrowFunction 包含在严格模式代码中,或者如果生成函数的 [[ECMAScriptCode]] 内部插槽值的代码以包含 Use 严格指令的指令序幕开头,则函数代码是严格模式代码。
  • 如果最后一个参数是字符串,而处理时以包含 Use Strict 指令的指令序幕开头的 FunctionBody,则作为参数提供给内置函数和生成器构造函数的函数代码是严格模式代码。

此外,如果您不知道当前版本的Node.js支持哪些功能,则node.green可以帮助您(利用与kangax相同的数据)。


答案 2