Ⅰ js中let和var定義變數的區別
區別的話,主要有幾個
1:作用域不一樣,var是函數作用域,而let是塊作用域,也就是說,在函數內聲明了var,整個函數內都是有效的,比如說在for循環內定義了一個var變數,實際上其在for循環以外也是可以訪問的,而let由於是塊作用域,所以如果在塊作用域內(比如說for循環內)定義的變數,在其外面是不可被訪問的,所以let用在for (let i; i < n; i++)是一種很推薦的寫法
2.let不能在定義之前訪問該變數,但是var是可以得。也就是說,let必須是先定義,再使用,而var先使用後聲明也行,只不過直接使用但是沒有卻沒有定義的時候,其值為undefined,這塊要注意,這一塊很容易出問題,這也是個人認為的let比var更好的地方,至於為啥會有這種區別呢,實際上var有一個變數提升的過程。也就是說,當這個函數的作用域被創建的時候,實際上var定義的變數都會被創建,並且如果此時沒有初始化的話,則默認會初始化一個undefined。
3.let不能被重新定義,但是var是可以的。這個呢,我個人認為,從規范化的角度來說,是更推薦的,比如說,你在前面聲明了一個變數,後來寫代碼,因為忘了之前的代碼邏輯,又聲明了一個同名的變數,如果這倆變數邏輯不一樣,並且後面都要用的話,很容易出問題,且不容易維護。
總之呢,let從規范化的角度來說,要比var要進步了很大一步。所以一般情況下的話,推薦用let,const這些。當然啦,如果相對var,const和let有更深入的了解,推薦幾篇小文章,這樣你就會對其相關知識點有更加深入的了解了。Javascript基礎之-var
Javascript基礎之-var,let和const深入解析(一)
Javascript基礎之-var,let和const深入解析(二)