一,var定義的變量,作用域是整個封閉函數,是全域的;let定義的變量,作用域是在塊級或者字塊中;
二,變量提升:不論通過var聲明的變量處於當前作用於的第幾行,都會提升到作用域的最頂部。
而let聲明的變量不會在頂部初始化,凡是在let聲明之前使用該變量都會報錯(引用錯誤ReferenceError);
三,只要塊級作用域內存在let,它所聲明的變量就會綁定在這個區域;
四,let不允許在相同作用域內重復聲明(報錯同時使用var和let,兩個let)。
const用來專門聲明一個常量,它跟let一樣作用於塊級作用域,沒有變量提升,重復聲明會報錯,不同的是const聲明的常量不可改變,聲明時必須初始化(賦值)