Node.js支持哪些版本的Javascript
我开始使用Node.js,并且很难弄清楚哪个版本的JavaScript受节点支持,这使得难以弄清楚我可以使用哪些功能使用。这是我所知道的。Node.js支持哪些版本的Javascript
- Node使用V8
- V8在ECMA-262,第三版指定执行的ECMAScript
- ECMA - 262,第三版是JavaScript 1.5
考虑到这一点,我会承担我可以使用节点中的JavaScript 1.5兼容代码。然而,事实证明我可以使用Array.forEach
以及其他构造,尽管根据MDC它不可用,直到Javascript 1.6 - ECMA-262,第5版。
我哪里错了?是否有文档详述可用的语言功能?
This matrix(V8紧跟WebKit专栏)似乎很好地回答了“我可以使用哪些功能?”这个问题。但是我找不到“JavaScript支持哪个版本”的规范答案?据我所知,最好的答案是这样的:支持ECMA-262第3版,但第5版的许多功能也被支持。
对于为什么V8遵循this thread上的WebKit和JavaScriptCore功能有个很好的解释。
节点JavaScript版本取决于节点使用哪个版本的v8。节点版本0.5.1(2011年7月14日)及以上版本使用v8 3.4.10或更高版本,并且是第5版ECMA-262,而不是第3版。第5版相当于Javascript 1.8.5。看下面的原因。
2011年5月21日至2011年6月15日,v8网站停止将v8列为实施第3版ECMA-262,并开始展示第5版。 http://web.archive.org/web/20110521053630/http://code.google.com/p/v8/ http://web.archive.org/web/20110615102350/http://code.google.com/p/v8/
按照V8的changelog,在2011年6月15日第8版改为版本3.4.4。所以那个版本和更高版本是第5版。
根据Node changelog,v8 3.4.10在2011年7月14日的Node Version 0.5.1中,因此版本及更高版本是第5版ECMA-26。这并不意味着3.4.10之前的v8版本纯粹是第3版,因为从第3版到第5版可能会有许多v8版本的稳定过渡。
这好像我们已经减少到两种策略来找出哪些节点的Javascript的版本使用:
策略1:信任哪些文件的地方说,这是错误在许多情况下。我还没有找到表格,指出哪个版本的节点支持哪个版本的ECMAScript的键值对。
策略2:猜测和检查。
查找ES6报价,“看它是否失败”的一个例子,是这样的:
[email protected]:~/code$ echo "console.log('blue'.includes('blue'))" > a.js
[email protected]:~/code$ cat a.js
console.log('blue'.includes('blue'))
[email protected]:~/code$ node a.js
/home/el/code/javascript/02/a.js:1
ports, require, module, __filename, __dirname) { console.log('blue'.includes('
^
TypeError: undefined is not a function
at Object.<anonymous> (/home/el/code/javascript/02/a.js:1:82)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Function.Module.runMain (module.js:501:10)
at startup (node.js:129:16)
at node.js:814:3
[email protected]:~/code$ babel-node a.js
true
我想的“巴别塔”在这里是对塔纳赫参考。我们的节点版本支持哪些功能?那么,我不知道,你必须手动测试它。这将成为一个巨大的MESS。更糟糕的是,这似乎是故意的。
对于2015年更新,请参见[Node.js 0.12中提供的ECMAScript 6功能](http://*.com/questions/28388885/ecmascript-6-features-available-in-node-js-0-12 )。 – 2015-08-01 01:14:52
而一个05.2016更新,根据[文档的NodeJS(https://nodejs.org/en/docs/es6/),它们遵循[JavaScript的ECMA-262规范,第6版](HTTP://www.ecma- international.org/publications/standards/Ecma-262.htm)和“所有ECMAScript 2015(ES6)功能分为三组,用于发货,上演和正在进行的功能” – 2016-05-18 09:15:30