首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是扩展模式?

什么是扩展模式?
EN

Stack Overflow用户
提问于 2013-06-22 17:38:44
回答 2查看 5K关注 0票数 32

我正在玩Nodev0.10.12中的let。使用--harmony标志,下列代码将产生语法错误:

代码语言:javascript
复制
for (let i = 0; i < 2; i += 1) {
    console.log('i', i);
}

SyntaxError:在扩展模式之外的非法让声明

但是,如果我也使用--use-strict标志,那么代码将按预期运行。

为什么仅使用--harmony标志时会引发语法错误?什么是扩展模式?什么是与严格模式的联系?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-22 19:03:33

2012年2月27日,“扩展模式”(Extended)似乎从和声规范的当前开发版本中删除了,但其中有一段描述了一些较老的模式(这是从2012年1月16日开始的):

10.1.2扩展代码 扩展代码是包含在ECMAScript程序语法单元中的任何代码,这些代码包含在ECMAScript规范第五版之后定义的词法或句法产品的出现。在下列情况下,代码被解释为扩展代码:

  • 如果全局代码包含在已以实现定义的方式指定为扩展程序单元的ECMAScript程序语法单元中,则全局代码是扩展的全局代码。
  • 如果对Eval的调用是对包含在扩展模式代码中的eval函数的直接调用(请参见15.1.2.1.1),或者是以?开头的,则eval代码是扩展的eval代码。
  • 作为FunctionDeclaration、FunctionExpression或访问器PropertyAssignment的一部分的函数代码是扩展函数代码,如果其FunctionDeclaration、FunctionExpression或PropertyAssignment包含在扩展模式代码中,或者如果函数代码以?开头。
  • 作为内置函数构造函数的最后一个参数提供的函数代码是严格的函数代码,如果最后一个参数是以FunctionBody开头的字符串。

术语“严格代码”用于指定实际的严格模式代码和扩展代码,而“扩展代码”一词仅指实际的扩展代码。术语“基本代码”用于指定未扩展代码的代码。

至于与严格模式的连接,这似乎是特定于V8的(实验)实现。10062修订版的变更量g引入了--harmony标志,其内容如下:

这个CL引入了第三种模式,在非严格模式(此后称为“经典模式”)和“严格模式”旁边,称为“扩展模式”,就像在当前的ES.next规范草案中一样。扩展模式基于“严格模式”,并为其添加了新功能。这意味着这两种模式的大部分语义是一致的。 当使用“严格模式”指令“使用严格”和和谐范围范围标志处于活动状态时,将在解析过程中输入“extended”,而不是“严格模式”。一旦完全指定了“扩展模式”的输入方式,就应该更改

票数 15
EN

Stack Overflow用户

发布于 2013-06-22 18:28:01

如何在你的node.js中获得和谐

--harmony标志启用ES和谐特征--harmony似乎在语言中启用了新的v8特性,基于v8,当使用此标志时,代理、弱映射、集、映射、类型语义和块作用域都是可用的,这些都是扩展的特性,在扩展这些特性之后,您可以使用let (用于块作用域),而strict mode只是基于这些特性才启用,否则会抛出

SyntaxError:在扩展模式之外的非法让声明。

扩展模式:当您使用新的ECMA特性(ECMAScript 5)时,您处于语言的扩展模式,在这种模式下,ECMAScript的新特性(扩展代码)和语法只能在严格模式中使用

“扩展代码”的概念,这意味着代码可以使用新的Es.next语法。

和声

“和谐”是JavaScript的主要升级项目,将于2013年底推出。2008年,在经历了许多争议之后,负责创建下一代JavaScript的ECMA技术委员会第39届会议同意就JavaScript的“和谐”更新进行合作,自那时以来,该委员会一直在开发中。一些拟议的特性的和谐是支持谷歌的实施。这包括块作用域绑定和添加let关键字、有效映射和集合以消除“将对象作为字典使用”、垃圾回收键/值表的弱映射以及可以模拟任何JavaScript对象或函数以启用自定义的代理。

一些不错的读物是这里听见。也来自铬博客

也来自保罗·爱尔兰

弗朗索瓦·博福特 (最初共享):在最后一个Chromium的chrome://标志页中出现了一个名为Enable实验性JavaScript的新标志。此标志使网页能够使用实验性的JavaScript功能。

要在Chrome中使用扩展的模式/和谐特性,我们必须启用它,我们可以通过导航到chrome://flags来启用它,并且可以在“试验性JavaScript特性”上切换(启用/禁用)。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17253509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档