VARの違い、3つのconstをしましょう

ES6は二つの重要なキーワードが追加しましょうconstの誰もが今日共有するために、不注意(間違った場所を記入してください)、3下のノートの前に差異の概要を引き出します。

、聞かせて

我々は、すべてのコマンドのみがLETに位置してみましょう宣言コード変数のブロック内(フォーカスリング)効果的な、関数とグローバルな作業は、Javascriptをブロックレベルのスコープではないことだけドメインを知っているが、のは、このような状況が生まれた壊れてみましょう。

  1.letが有効なブロックであり、varがグローバル(コード)効果的です

  

もし){ 
    ましょう =「我」VaRの B = '你' ; 
} 
にconsole.log( A + "う")。  // 报错:キャッチされないにReferenceError:定義されていない 
はconsole.log( "VAR" + B)。

 質問です:私たちは、サイクル0-9この10桁をプリントアウトしたい場合、早期に、私たちはしばしば、このような間違い(エラー例)を行います。

VAR ; Iは、10 <I ++はI = 0 {)
  のsetTimeout(関数(){ 
    にconsole.log(I); 
  })
} 
// 出力10 10

サイクルの終了後に、この時間は私が持っているので、変数var iはiが、グローバル変数I I価値のタイマので、各サイクルは同じプリントである、ようにだけグローバル変数、グローバル規模で効果的な宣言しました10。この問題は(正しい例)を解決するには:

        ためVAR I = 0; iが10 <; iは++ ){ 関数(I){ 
                     たsetTimeout(関数(){ 
                    にconsole.log(I); 
                  })
            })(I)
        }

機能の雹は、あなたが作成するたびに独自の値を格納するためのスペースがあるだろうので、私たちは、閉鎖機能によって実装されています。それは私たちが望む結果を得るためになる。そのため、私たちはさまざまな作成するために閉鎖関数に渡されるたびにループのi値を、実行しますので、メモリ内の関数をiは値の各閉鎖は、それは同じではありませんレッツブロックレベルのスコープは、私たちもすることによって達成することができます。

(J = 0せ; J <10; J ++ ){ 
  たsetTimeout(関数(){ 
    にconsole.logは(J); 
  })
} 
// 输出0123456789を

  可変リフト2.letは変数varを強化するために存在し、存在しません。

console.log(A)。  // にReferenceError:Aが定義されていない 
= "我"をしましょう
 
console.log(B)。  // 未定義
するvar B = "你"。

 varステートメントと変数の存在スクリプトの実行が開始したとき、bがすでに存在しますが、値を持たないを強化、それが出力未定義ます

  3.let文を繰り返すことはできません、varが変数を複数回宣言することができます

=ましょう
てみましょう = bは、
VaRの B = C;
VaRの B = D; // 識別子「」既に宣言されている 
B   // D

 

二、constのコマンド

constの読み取り専用変数を宣言宣言が明らかES6のために、初期化されなければならないと、文はそこにコードブロックがあるかのconstを許可すれば、これらの変数を閉じを形成するために、ブロックの先頭からのコマンド文をブロックする、ことを、変更することはできませんスコープ。その前のコードブロックは、変数宣言を与えられます。

VaRのA = "A" ; もし){ コンソールログインするA )。//にReferenceError:定義されていないのconst PI = "3.1415926" }      

おすすめ

転載: www.cnblogs.com/liangjh518/p/11357207.html