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

时间:2013-08-24 10:09:26

标签: javascript node.js use-strict

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

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

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

1 个答案:

答案 0 :(得分:171)

"use strict";

基本上它启用严格模式。

  

严格模式是一种允许您在“严格”操作环境中放置程序或功能的功能。在严格的操作上下文中,方法表单像以前一样将它绑定到对象。函数表单将此绑定到undefined,而不是全局集对象。

根据你的意见,你会说有些不同之处。但这是你的假设。 Node.js代码只是你的JavaScript代码。所有Node.js代码都由V8 JavaScript engine解释。 V8 JavaScript引擎是Google为Chrome网络浏览器开发的开源JavaScript引擎。

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

请阅读JavaScript中的严格模式。

了解更多信息:

  1. Strict mode
  2. ECMAScript 5 Strict mode support in browsers
  3. Strict mode is coming to town
  4. Compatibility table for strict mode
  5. Stack Overflow questions: what does 'use strict' do in JavaScript & what is the reasoning behind it
  6. <小时/> ECMAScript 6:

    ECMAScript 6 Code&amp;严格模式。以下是简短的from the specification

      

    10.2.1严格模式代码

         

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

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

    此外,如果您对当前版本的Node.js支持的功能感到迷失,这node.green可以为您提供帮助(利用与kangax相同的数据)。