2017-04-25 70 views
0

函數作用域對我來說是二十年來非常好的。現在我到處閱讀,我應該使用letconst而不是var。我想這主要是因爲它是一個新功能。爲什麼我應該喜歡塊範圍?爲什麼我應該使用塊範圍而不是函數範圍?

+1

因爲JS被批評很長一段時間沒有尊重所有其他語言(至少是着名的)尊重塊範圍。現在,JS正在通過彌補很多空白來推進這些語言。 –

+2

你不應該,除非你有充分的理由這樣做。繼續使用* var *的一個很好的理由是它向後兼容。 * const *和* let *限制你的代碼運行的環境只有很少的好處,你可以從* strict mode *(也是向後兼容的)中獲得類似的好處。 – RobG

+0

你可以在這裏閱讀,爲什麼你應該使用let和const,它是關於「Variable hoisting」 http://stackoverflow.com/questions/3725546/variable-hoisting –

回答

6

const有一個明顯的優點,那就是它是一個不變的約束。 let有一個暫時死區,禁止在同一範圍內重新標識一個標識符,所以它有助於防止某些錯誤。

除此之外,當您不需要塊範圍時繼續使用var並沒有什麼錯誤。

+0

Const很好,但是可以導致一些有趣的錯誤...例如在初始化之前詢問'typeof'塊變量導致錯誤... – Akxe

+4

@Akxe:爲什麼要問這個類型如果變量不是初始化了嗎?我認爲給'let'個案引發的錯誤是一個特徵。 –

+0

謝謝!我會保留'var',並且可以通過我的愛好項目練習'let'和'const'。 – inf3rno

相關問題