js中 let var const 的差異和使用場景
阿新 • • 發佈:2019-02-02
有問題可以掃碼加我微信,有償解決問題。承接小程式開發。
微信小程式開發交流qq群 173683895 、 526474645 ;
正文:
建議使用的優先順序:const > let > var
ES6 提出了兩個新的宣告變數的命令:let
和const
。其中,let
完全可以取代var
,因為兩者語義相同,而且let
沒有副作用。
'use strict';
if (true) {
let x = 'hello';
}
for (let i = 0; i < 10; i++) {
console.log(i);
}
上面程式碼如果用var
let
,實際上就聲明瞭兩個全域性變數,這顯然不是本意。變數應該只在其宣告的程式碼塊內有效,var
命令做不到這一點。
var
命令存在變數提升效用,let
命令沒有這個問題。
'use strict';
if (true) {
console.log(x); // ReferenceError
let x = 'hello';
}
上面程式碼如果使用var
替代let
,console.log
那一行就不會報錯,而是會輸出undefined
,因為變數宣告提升到程式碼塊的頭部。這違反了變數先聲明後使用的原則。
所以,建議不再使用var
命令,而是使用let
命令取代。
在let
和const
const
,尤其是在全域性環境,不應該設定變數,只應設定常量。
const
優於let
有幾個原因。一個是const
可以提醒閱讀程式的人,這個變數不應該改變;另一個是const
比較符合函數語言程式設計思想,運算不改變值,只是新建值,而且這樣也有利於將來的分散式運算;最後一個原因是 JavaScript 編譯器會對const
進行優化,所以多使用const
,有利於提高程式的執行效率,也就是說let
和const
的本質區別,其實是編譯器內部的處理不同。
// bad var a = 1, b = 2, c = 3; // good const a = 1; const b = 2; const c = 3; // best const [a, b, c] = [1, 2, 3];
const
宣告常量還有兩個好處,一是閱讀程式碼的人立刻會意識到不應該修改這個值,二是防止了無意間修改變數值所導致的錯誤。
所有的函式都應該設定為常量。