let和const都是es5,es6新版本的js語言規范出來的定義,在這以前定義一個變量只能用var。let和const都是為了彌補var的一些缺陷而新設計出來的。
簡單來說是: let是修復了var的作用域的一些bug,變的更加好用。let是更好的var。
區別:
- var的作用於是函數作用域,其作用域為該語句所在的函數內,而let是塊級別(作用域僅在大括號括起來的里面);
-
使用var聲明的變量,其作用域為該語句所在的函數內,且存在變量提升現象,注意變量提升,只是將聲明提升,賦值並不會提升;
- 使用let聲明的變量,其作用域為該語句所在的代碼塊內,不存在變量提升,也就是let聲明的變量,在聲明前無法使用, 會報出ReferenceError錯誤;
- 使用const聲明的是常量,在后面出現的代碼中不能再修改該常量的值。用
const
聲明變量后必須要賦值,否則拋出語法錯誤。