如何在Node.js中解释'use strict'语句?
我已经开始探索Node.js并编写了许多演示Web应用程序,以了解Node.js,Express.js,jade等的stream程。
但是最近我遇到的一件事是,在每个函数和每个.js
文件中,都"use strict"
作为第一行。
Node.js究竟是如何解释的?
"use strict";
基本上它使严格的模式。
严格模式是一项function,允许您在“严格”操作环境中放置程序或函数。 在严格的操作环境中,方法forms像以前一样将其绑定到对象。 函数forms将其绑定为未定义的,而不是全局集合对象。
根据你的意见,你说的一些差异将在那里。 但这是你的假设。 Node.js代码不过是你的JavaScript代码。 所有Node.js代码都由V8 JavaScript引擎解释。 V8 JavaScript引擎是由Google为Chrome浏览器开发的开源JavaScript引擎。
所以, "use strict";
将没有什么重大的区别"use strict";
由Chrome浏览器和Node.js解释
请阅读JavaScript中的严格模式。
了解更多信息:
- 严格的模式
- ECMAScript 5在浏览器中支持严格的模式
- 严格的模式来到城镇
- 严格模式的兼容性表
- 堆栈溢出问题:在JavaScript中使用“严格使用”的是什么?它背后的原因是什么?
ECMAScript 6:
ECMAScript 6代码和严格模式。 以下是来自规范的简要介绍:
10.2.1严格的模式代码
ECMAScript脚本语法单元可以使用无限制或严格模式语法和语义进行处理。 在以下情况下,代码被解释为严格的模式代码:
- 全局代码是严格的模式代码,如果它以包含使用严格指令的指令序言开始(见14.1.1)。
- 模块代码始终是严格的模式代码。
- ClassDeclaration或ClassExpression的所有部分都是严格的模式代码。
- 如果以包含使用严格指令的指令序言开始,或者对eval的调用是严格模式代码中包含的直接评估(见第12.3.4.1节),则评估代码为严格模式代码。
- 如果在严格模式代码中包含关联的FunctionDeclaration,FunctionExpression,GeneratorDeclaration,GeneratorExpression,MethodDefinition或ArrowFunction,或者产生函数[[ECMAScriptCode]]内部插槽值的代码以Directive Prologue开头,则函数代码为严格模式代码包含使用严格指令。
- 如果最后一个参数是一个string,那么作为参数提供给内置的函数和生成器构造函数的函数代码是严格模式代码,当处理该string时,函数体将以包含使用严格指令的指令序言开始。
此外,如果您遗漏了当前版本的Node.js支持的function,则此node.green可以帮助您(利用与kangax相同的数据)。