2016-11-12 113 views
4

我发现Node使用Chrome的V8 JavaScript引擎。有一些关于ES6支持的信息herehere。使用Node时甚至有V8选项的开关:是否可以在Node中设置ECMAScript版本?

node --v8-options 

但是没有一个选项似乎允许选择ECMAScript版本。

此外here我发现几年前Node支持ES3的信息,但后来随着V8的发展它切换到了ES5。

是否有可能强制Node使用版本高于5的ECMAScript?目前是否使用V8引擎支持ES版本选择?

回答

3

EcmaScript的所有版本都向后兼容以前的版本。

ES3功能可以在ES5中使用,而ES5功能可以在ES2015中使用,所以不应该在ES3环境中专门运行代码,因为ES3代码在ES5和ES2015中应该可以正常工作。

一般来说,在EcmaScript的新版本中没有任何重大更改,即使在ES5中,当他们决定尝试清理语言时,他们决定添加use strict,以免破坏任何内容ES3中运行的旧代码。

Javascript引擎通常不会有运行不同版本的EcmaScript的选项,因为它不应该被需要,最新版本应该与该标准的所有先前版本兼容。

+0

确实如此,但是我想运行ES3来测试旧版本。特别是我想在现场演示中展示TypeScript可以在ES3上运行的实时演示(目标是'es3','es5','es6','es2015'),因此即使在非常古老的浏览器中,我们也可以获得现代化的功能。我也想看看TS编译器是否会正确地修改像ES5中引入的Object.create()这样的操作,以便在ES3中运行。 – Landeeyo

+1

然后我认为你唯一的选择是尝试找到一个足够老的引擎,它只支持ES3,这不会是Node,你必须在Node发布之前回溯到Netscape Navigator 1.0和1995年或大约那个时候。 – adeneo

+0

@adeneo,JS中的'重复的属性名称'呢?在严格模式下的ES5中,它们被视为语法错误。但在ES2015中,他们消除了由于“计算属性名称”可能发生冲突而导致的错误。 那么,如果我想启用该语法错误呢? –

2

由于实现者没有实现规范的所有功能,所以供应商实现的功能集彼此不一致,所以JS引擎不再符合规范的版本。这是一个短暂的梦想。

为了在ES3上进行演示,您需要运行IE6 - 8. ...这有其自身的问题,因为IE有一些让人难以接受但奇怪可行的怪癖。

相关问题