一尘不染

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

node.js

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

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

Node.js对它的解释如何?


阅读 205

收藏
2020-07-07

共1个答案

一尘不染

"use strict";

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

严格模式是一项功能,使您可以在“严格”的操作环境中放置程序或功能。在严格的操作上下文中,方法窗体像以前一样将此绑定到对象。函数形式将其绑定到未定义的对象,而不是全局设置的对象。

根据您的评论,您正在说会有一些区别。但这是您的假设。Node.js代码不过是您的JavaScript代码。所有Node.js代码均由 V8
JavaScript引擎
解释。在
V8 JavaScript引擎 是由谷歌的Chrome网络浏览器开发的开源JavaScript引擎。

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

请阅读JavaScript中的严格模式。

想要查询更多的信息:

  1. 严格模式
  2. 浏览器中的ECMAScript 5严格模式支持
  3. 严格模式即将来临
  4. 严格模式的兼容性表

ECMAScript 6:

ECMAScript 6代码和严格模式。以下是该规范的简要说明

10.2.1严格模式代码

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

  • 如果全局代码以包含使用严格指令的指令序言开头(请参见14.1.1),则它是严格模式代码。
  • 模块代码始终是严格模式代码。
  • ClassDeclaration或ClassExpression的所有部分都是严格模式代码。
    * 如果Eval代码以包含使用严格指令的指令序言开头,或者如果eval的调用是包含在严格模式代码中的直接eval(请参阅12.3.4.1),则它是严格模式代码。
    * 如果在严格模式代码中包含相关的FunctionDeclaration,FunctionExpression,GeneratorDeclaration,GeneratorExpression,MethodDefinition或ArrowFunction,或者如果产生该函数的[[ECMAScriptCode]]内部插槽值的代码以伪指令开头,则函数代码为严格模式代码。包含“使用严格”指令。
    * 如果最后一个参数是一个字符串,则该函数代码将作为内置函数和生成器构造函数的参数提供给函数代码,该字符串在处理时是一个以包含“使用严格指令”的指令序言开头的FunctionBody。

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

2020-07-07