(1)作用域不同
var是函數作用域,let是塊作用域。
在函數中聲明了var,整個函數內都是有效的,比如說在for循環內定義的一個var變量,實際上其在for循環以外也是可以訪問的
而let由於是塊作用域,所以如果在塊作用域內定義的變量,比如說在for循環內,在其外面是不可被訪問的,所以for循環推薦用let
(2)let不能被重新定義,但是var是可以的
(3)let不能在定義之前訪問該變量,但是var可以
let必須先聲明,在使用。而var先使用后聲明也行,只不過直接使用但沒有定義的時候,其值是undefined。
var有一個變量提升的過程,當整個函數作用域被創建的時候,實際上var定義的變量都會被創建,並且如果此時沒有初始化的話,則默認為初始化一個undefined。