1. 程式人生 > 實用技巧 >js中var/let/const的區別及使用場景

js中var/let/const的區別及使用場景

原文:https://www.cnblogs.com/chysunny/p/12674965.html

  第一,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 提出了兩個新的宣告變數的命令:letconst,宣告變數的方式這麼多,我們究竟怎麼選擇更好呢?給大家建議使用的優先順序:const > let > var

  首先const宣告常量的好處,一是閱讀程式碼的人立刻會意識到不應該修改這個值,二是防止了無意間修改變數值所導致的錯誤,另外其實js編譯器也對const進行了優化,可以提高程式碼的執行效率;

   另外let宣告的變數沒有預編譯和變數升級的問題,先宣告再使用其實更為規範,而let本身是一個塊級作用域,很多時候我們在寫程式碼的時候都希望變數在某個程式碼塊內生效,也更為方便。

  最後說一點就是使用的場景說明:let一般應用於基本資料型別;const一般應用於引用資料型別,也就是函式物件等。