私はNode.jsを使い始めており、ノードがサポートしているJavaScriptのバージョンを把握するのに苦労しており、使用できる機能を把握するのが難しくなっています。これが私が知っていることです。
これを考えると、ノードでJavaScript 1.5互換コードを使用できると思います。ただし、 Array.forEach
、MDCによると、Javascript 1.6-ECMA-262、第5版まで利用できませんが、他の構成要素の中では。
どこがおかしいの?利用可能な言語機能の詳細を記載したドキュメントはどこかにありますか?
Node javascriptバージョンは、Nodeが使用するv8のバージョンによって異なります。Nodeバージョン0.5.1(2011年7月14日)以降はv8 3.4.10以降を使用し、第3版ではなく第5版ECMA-262です。第5版はJavascript 1.8.5と同等です。以下の理由を参照してください。
2011年5月21日から2011年6月15日までに、v8 Webサイトは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の変更ログによると、2011年6月15日にv8はバージョン3.4.4に変更されました。そのため、そのバージョン以降は第5版です。
Node changelog、v8 3.4.10はNode Version 0.5.1、14 Jul 2011であったため、そのバージョン以降は第5版ECMA- 26.これは、多くのv8バージョンを通じて第3から第5に着実に移行している可能性があるため、3.4.10より前のv8バージョンが純粋に第3版であることを意味しません。
ある時点で、異なるNodeバージョンに対してJavaScript機能のサポートを追跡するために node.green が作成されたように見えます。
Javascriptノードのどのバージョンを使用するかを判断するために、2つの戦略に削減されたようです。
戦略1:どこかのドキュメントが述べていることを信頼します。これは多くの場合間違っています。どのバージョンのノードがどのバージョンのECMAScriptをサポートしているかのキーと値のペアを示すテーブルが見つかりません。
戦略2:推測とチェック。
ES6で引用されている機能を見つけて、「失敗するかどうかを確認」してください。次のようなものです。
el@apollo:~/code$ echo "console.log('blue'.includes('blue'))" > a.js
el@apollo:~/code$ cat a.js
console.log('blue'.includes('blue'))
el@apollo:~/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
el@apollo:~/code$ babel-node a.js
true
ここの「バベル」はタナフ語への言及だと思います。ノードのバージョンはどの機能をサポートしていますか?よくわかりませんが、手動でテストする必要があります。これは巨大なMESSになるでしょう。さらに悪いことに、それは意図的に行われているようです。