在ES5中咱們在聲明時只有一種方法,就是使用var來進行聲明,ES6對聲明的進行了擴展,如今能夠有三種聲明方式。spa
(1)var
:它是variable的簡寫,能夠理解成變量的意思。code
(2)let
:它在英文中是「讓」的意思,也能夠理解爲一種聲明的意思。blog
(3)const
:它在英文中也是常量的意思,在ES6也是用來聲明常量的,常量你能夠簡單理解爲不變的量。console
var在ES6裏是用來升級全局變量的,也就是說,在ES6中使用var是用來聲明全局變量的。編譯
var a=2; { var a=3; } console.log(a);
這時打印出來的值是多少那?對,應該是3,由於var是全局聲明的。class
與var向對應的是let,它是局部變量聲明。仍是上面的例子,咱們試着在區塊裏用let聲明。變量
var a=2; { let a=3; } console.log(a);
這時候控制檯打印出來的值就是2了。若是咱們只在區塊裏聲明,再也不外部聲明,咱們打印a時就會報錯,顯示找不到變量。擴展
{ let a=3; } console.log(a);// a is not defined
上述說明了let是局部變量聲明,let聲明只在區塊內起做用,外部是不能夠調用的。循環
你執行時會發現控制檯報錯了,找不到循環體外的i變量。經過兩種聲明的比較,能夠明白let在防止程序數據污染上仍是頗有用處的。咱們要努力去習慣用let聲明,減小var聲明去污染全局空間。程序
從聲明開始,這個變量始終不變,就須要用const進行聲明。
好比下面的代碼:
const a="我是常量"; var a='我還可變'; console.log(a);
在編譯這段代碼的過程當中,你就會發現已經報錯,沒法編譯了,緣由就是咱們const聲明的變量是不能夠改變的。