let什麼的變量在塊級做用域內有效,而var聲明則在全局做用內有效函數
let聲明的變量不存在變量提高,即必定要在聲明以後才能調用,不然就會報錯;es5
而var聲明的變量則是存在變量提高的,即在聲明以前也是能夠調用的,不過結果值爲undefined。spa
只要塊級做用域內存在let命令,它聲明的變量就綁定在這個區域內,即便在全局裏面有同名的變量,也跟這個不要緊了,在該做用區域內,使用let聲明以前,該變量都不可用。內存
let聲明的變量,在同一做用域內是不容許被重複聲明的;作用域
而var聲明的變量則能夠在同一做用域內被重複聲明。變量
(1).解決了es5中內層變量可能覆蓋外層變量的問題循環
(2).避免了循環變量泄漏爲全局變量let
(3).避免內外層變量互相影響函數表達式
(4)能夠替代當即執行函數表達式undefined