VaRの問題の宣言的に1、ES5
1)、同じスコープVaRの内部にある前部が上書きされるの背後に、変数宣言を繰り返すことができます
2)変数varは変数を宣言するVARを使用する前に、問題を強化するためにされて存在するが、この変数を使用することです
2、VARの異なる特性を聞かせて
1)文は繰り返すことはできませんしましょう
2)letが存在感を高めるために、不変です
ブロックレベルのスコープ不感帯3)一時的な存在(すなわち、面積が同じ名前を持つ変数に存在しないことができ、この領域が既にこの変数にバインドされています)
括弧でない場合、ブロックレベルのスコープでES5では、次の例では、印刷を行います
IF(偽の){ VARの lagev = 'jkgba' ; } にconsole.log(lagev); //未定義 次のように: VaRのlagev; IF(偽の){ lagev = 'jkgba' ; } にconsole.log(lagev);
しかしlet文を使用した場合、ブロックレベルのスコープの存在は、唯一の有効範囲内でアクセスすることができます
IF(偽の){
LET lagev = 'jkgba' ;
}
(lagev)にconsole.log; //与えられ、未定義
別の例は、forループであります
ため(VAR i = 0; iは3 '; iは++ ){ // ... } にconsole.log(I); // iはグローバル変数を宣言VARので、私は、3から印刷され、この場合、私が使用する同じサイクル毎時間 LET使用される場合は、ループを行うには、各ループ本体は、各サイクルは、Iの可変ブロックレベルのスコープを再宣言され、ブロックレベルの範囲であり、時間意志iおよび次結合ステートメントとループ電流の値がサイクル毎に,,すなわち、初期値 のため(LETは、i = 0; iは<3; iは++ ){ document.addEventListener(「クリック」、関数( ){ 警告は、(i)であり; // この場合は、私は0,1,2 }) }
この問題は、使用ES5のvarが達成される場合は、閉鎖、保存、iの各値を使用する必要があります実際には、使用した後、そのパフォーマンスはVARのいくつかのより悪いかもしれましょう、達成するために閉鎖してもコンパイルしてみましょう
が、今ChromeのV8エンジンの性能は非常に強力であり、そして常に微調整されます
3、ES6は、文の定数を追加しました
これは、代入文の後に変更し、することはできませんと同じ特性を聞かせて
CONSTネジ= 10。
= 2 ULIR; //この場合は、エラーの種類を説明します
一般的には、モジュールプロジェクトを導入するために使用され、我々は変更する必要はありません