VaRのコントラストとlet

1.var定義された変数は、可変リフト次のようになります。

       変数が関数内で宣言されている場合は、変数の宣言は関数の先頭にアップグレード

       変数はグローバル変数を宣言している場合は、変数の宣言はグローバルスコープの先頭にアップグレード

長いそのような定義を使用する前にも、定義されたようにも文句を言うが、のは、定義されていないことはできません使用を定義するとエラーになります前に、

console.log(K)
はconsole.log(x)は
x = 10せ
VARのK = 'DDD'

コンソールが印刷されます

     未定義

     キャッチされていないにReferenceError:初期化前にアクセスすることはできません「X」

2.varのみグローバルスコープやポイントのローカルスコープ、およびブロックレベルのスコープ定義でき(グローバル変数var定義されたウィンドウが自動的に属性としてオブジェクトに追加されます)

(VAR J = 0; J <10; J ++){ため
   のsetTimeout(関数(){ 
      にconsole.log(J)
   })
} 
// 10 10- 
//缶アクセスグローバル変数以下汚染
(CONSOLE.LOG「 - ------ 'J)
はconsole.log(' -------」、window.j)

のための(LET I = 0、I <10; I ++){ 
   たsetTimeout(関数(){ 
      コンソール。 (I)のログ
   })
} 
に印刷されている--- // 0 9。
//    キャッチされないにReferenceError:ではありません私は、定義された 
)はconsole.log( '-------'、Iを

3. varが再定義し、割り当て可能とエラーが再割り当てされますせないようにさせることができます

X 10 =せ

LET = FOO()=> { 
      にconsole.logは( '-----------------------'、X)
      //下記再定義することはないであろう
      LET X = 20である
      ++ X 
} 
/ /グローバルまたはローカル次再定義することができないに関係なく説明する
LET X = 1つの
)(FOO
K = VAR '444' 
VAR = K 'KJK' 
にconsole.log(K)//通常の出力

  

おすすめ

転載: www.cnblogs.com/xhliang/p/11971704.html