繼續學習打卡,武漢加油,逆戰必勝!今日咱們主要探討一下js中var let const的區別。
第一,var是咱們接觸js開始就學習到的一種定義變量的方式,那么這種方式定義的變量有什么特點呢?
1,var定義的變量會預解析,簡單的說就是如果變量沒有定義就直接使用的話,JavaScript回去解析這個變量,代碼不會報錯,只會輸出undefined
2,var定義的變量可以反復去定義,當然后面的會覆蓋前面的
3,var在循環中使用的時候,循環體外依然可以使用
4,在循環綁定事件過程中,var定義的變量無法保存,循環會在瞬間執行完
第二,let聲明的變量的特點
1,let定義的變量不會預解析,必須先聲明再使用,否則會報錯
2,let不能定義已經定義過的變量(無論之前是用var定義的還是let或者const定義的)
3,let是塊級作用域,函數內部使用let定義后,對函數外部無影響,簡單說就是在一個{}里面生效
4,由於let是塊級作用域,在循環綁定事件過程中let會在這個循環中生效,再次循環時let會重新定義生效
第三,const聲明的變量的特點:
1,const定義的變量不會預解析,必須先聲明再使用,否則會報錯
2,const定義的變量不允許修改
但是,在數組里面,const的值是允許被修改的,這是因為const存儲的是地址,值的內容可以變化
下面做個總結,也就是大家需要思考的問題:ES6 提出了兩個新的聲明變量的命令:let
和const,
聲明變量的方式這么多,我們究竟怎么選擇更好呢?給大家建議使用的優先級:const > let > var
首先const聲明常量的好處,一是閱讀代碼的人立刻會意識到不應該修改這個值,二是防止了無意間修改變量值所導致的錯誤,另外其實js編譯器也對const進行了優化,可以提高代碼的執行效率;
另外let聲明的變量沒有預編譯和變量升級的問題,先聲明再使用其實更為規范,而let本身是一個塊級作用域,很多時候我們在寫代碼的時候都希望變量在某個代碼塊內生效,也更為方便。
最后說一點就是使用的場景說明:let一般應用於基本數據類型;const 一般應用於引用數據類型,也就是函數對象等。