Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ';使用严格的';在Node.js中解释的语句?_Javascript_Node.js_Use Strict - Fatal编程技术网

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

Javascript ';使用严格的';在Node.js中解释的语句?,javascript,node.js,use-strict,Javascript,Node.js,Use Strict,我已经开始探索Node.js并编写了许多演示web应用程序,以了解Node.js、Express.js、jade等的流程 但我最近遇到的一件事是,语句“use strict”作为每个函数和每个.js文件的第一行 Node.js究竟如何解释它?“使用严格” 基本上,它支持严格模式 严格模式是一种允许您将程序或函数置于“严格”操作上下文中的功能。在严格的操作上下文中,方法表单像以前一样将其绑定到对象。函数窗体将其绑定到未定义的对象,而不是全局集合对象 根据您的评论,您正在告诉我们一些差异将存在。但这

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

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

Node.js究竟如何解释它?

“使用严格”

基本上,它支持严格模式

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

根据您的评论,您正在告诉我们一些差异将存在。但这是你的假设。js代码只是您的JavaScript代码。所有Node.js代码都由。v8javascript引擎是一个开源JavaScript引擎,由谷歌为Chrome浏览器开发

因此,
如何“严格使用”不会有很大区别由Chrome浏览器和Node.js解释

请阅读JavaScript中的严格模式

有关更多信息:


  • ECMAScript 6:

    ECMAScript 6代码和严格模式。以下为简要内容:

    10.2.1严格模式代码

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

    • 如果全局代码以包含Use strict指令的指令序言开头,则它是严格模式代码(参见14.1.1)
    • 模块代码始终是严格的模式代码。
    • 类声明或类表达式的所有部分都是严格的模式代码
    • 如果Eval代码以包含Use strict指令的指令序言开头,或者如果Eval调用是包含在严格模式代码中的直接Eval(见12.3.4.1),则Eval代码为严格模式代码
    • 如果关联的FunctionDeclaration、FunctionExpression、GeneratorDeclaration、GeneratorExpression、MethodDefinition或Arrow函数包含在严格模式代码中,或者如果生成函数[[ECMAScriptCode]]值的代码内部插槽以包含Use Strict指令的指令序言开始
    • 如果最后一个参数是字符串,并且在处理时是以包含Use strict指令的指令序言开头的函数体,则作为内置函数和生成器构造函数的参数提供的函数代码是严格模式代码

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

    A
    “使用严格的”字符串。@GoloRoden:这是禁止的吗?Chrome的行为方式与此处的node完全相同。@Eric:谢谢,Chrome的行为方式与此处的node完全相同。。因为V8是解释器……)@Mohit Pandey:事实是我提到了learning node.js的堆栈溢出。我引用了以下链接:。于是注册并问了这个问题。。喜欢人们如此快速地评论和回答的方式。。。多亏了大家……我不确定这是不是复制品。这个问题有助于我理解node.js是使用与Chrome浏览器相同的引擎来解释的。如果没有这些知识,关于“严格使用”是如何应用的,就没有多少清晰可言。首先,Chrome不是这个星球上唯一的浏览器。只是Node.js和Chrome使用V8,并不意味着它在所有浏览器中的工作方式都必须相同。其次,加载文件(又称模块)的方式有所不同。第三,浏览器的脚本通常是为了生产使用而连接在一起的,这就是当你说两者是相同的环境时可能出现的问题。他们不是。在执行Node.js文件时,V8并不是唯一重要的东西。@Gabriellamas:谢谢。@戈洛·罗登:是的,如果评论正确的话。我们可以给出更多更好的答案。@AmolMKulkarni:“模块代码总是严格的模式代码”-这对于节点来说并不完全正确。如果不在节点v.6.10.2中使用“use strict”,则以下代码不会抛出错误:
    var obj={};对象扩展(obj);目标a=1@fider:虽然你的问题我不太清楚。你可以考虑问一个新问题,或者在评论中继续解释它是否与这个问题相关。在此之前,如果您能找到答案,请先了解一下这一点。这可能有助于研究默认严格模式: