2

このコード:

var x = 8,
    y = 12;

let ( x = 5, y = 10) {
   return x + y;
} 

..「SyntaxError: 拡張モード外の不正な let 宣言」を与える

しかし、「厳密な使用」を使用すると、正常に機能します。

なぜ「let」が最初に「use strict」モードと統合されたのか興味深いです。( http://kangax.github.io/compat-table/es6/#nodeharmonyによる)

4

1 に答える 1

6

letES3 時代の JavaScript では予約語ではありません。たとえば、次のようにします。

var let = 5;

という変数を宣言しますlet。ES5 の仕様は将来を見据えており、将来的に使用されると予想されるキーワードを厳密モード関数内で予約しました。したがって、ES6 の世界ではlet、キーワードとして解析できますが、厳密なコンテナー内でのみ解析できます。厳密なコンテナーの外側では、下位互換性によりlet、キーワードではなく識別子として扱われることが要求されます。

于 2015-03-26T16:15:44.990 に答える