2016-05-09 17 views
1

私はAirbnb(https://github.com/airbnb/javascript)のjavascriptスタイルガイドを使いました。letとvarの違い

はセクション2.2においては

LETはブロックスコープではなく、関数スコープのVARのようなものであると説明されています。

// bad 
var count = 1; 
if (true) { 
    count += 1; 
} 

// good, use the let. 
let count = 1; 
if (true) { 
    count += 1; 
} 

最初のものは悪い習慣と第二が不良であるとの両方ましょうとVAR場合、なぜ私が取得していないブロックは、私はそれらのいずれかを使用している場合、それは、どのような違いを生むんその後、スコープされていますか?

また、機能スコープとブロックスコープの違いは何ですか?何かブロックがスコープされ、それはあなたがコントロールできることを意味寿命より良く、よりintutive方法

例えば

function a() { 
    if (true) { 
     var a = 7; 
     let b = 42; 
    } 
} 

をするvar aはなく、関数のスコープに引き出され

+0

私に誤りがあるようです。 varとletはifにする必要があります。 –

+0

おそらく重複しています。 "http://stackoverflow.com/a/11444416/1715004 –

+2

" letとvarの両方がブロックスコープの場合 " - それらはそうではなく、全体の点です。 – Quentin

答えて

2

ifのためにブロックで隔離されています。

function a() { 
    var a; // The JS compiler pulls the var out to this level 
    if (true) { 
     a = 7; 
     let b = 42; // but keeps the let in this block. 
    } 
} 

...それはカウンター直感的で、時には問題につながる - letはその問題を持っていません。

+0

最初の例では、&bはifブロックの外側と2番目の例では表示されません。それでも、関数とブロックスコープの違いを理解していない – ankit

+0

[この質問の回答](http://stackoverflow.com/questions/762011/let-keyword-vs-var-keyword)は非常に良いです - haveそれらを見てください。 – Mingo

関連する問題