1. 程式人生 > >js中 let var const 的差異和使用場景

js中 let var const 的差異和使用場景

 有問題可以掃碼加我微信,有償解決問題。承接小程式開發。

微信小程式開發交流qq群   173683895  、 526474645 ;

正文:

建議使用的優先順序:const   >  let   >   var 

ES6 提出了兩個新的宣告變數的命令:letconst。其中,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替代letconsole.log那一行就不會報錯,而是會輸出undefined,因為變數宣告提升到程式碼塊的頭部。這違反了變數先聲明後使用的原則。

所以,建議不再使用var命令,而是使用let命令取代。

letconst

之間,建議優先使用const,尤其是在全域性環境,不應該設定變數,只應設定常量。

const優於let有幾個原因。一個是const可以提醒閱讀程式的人,這個變數不應該改變;另一個是const比較符合函數語言程式設計思想,運算不改變值,只是新建值,而且這樣也有利於將來的分散式運算;最後一個原因是 JavaScript 編譯器會對const進行優化,所以多使用const,有利於提高程式的執行效率,也就是說letconst的本質區別,其實是編譯器內部的處理不同。

// 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宣告常量還有兩個好處,一是閱讀程式碼的人立刻會意識到不應該修改這個值,二是防止了無意間修改變數值所導致的錯誤。

所有的函式都應該設定為常量。