TS/JS---const、let、var的區(qū)別和適用場景
在ES5及之前的JavaScript版本中,通常使用var
關(guān)鍵字聲明變量。
var對作用域的限制相當錯亂,這里指的錯亂不是var本身,而是編寫層次上的。舉個例子,變量的作用域限制在聲明的函數(shù)內(nèi)部,如果在函數(shù)外部訪問,將會報錯,這個歸類于函數(shù)作用域。然而變量聲明如果被提升到作用域的頂部,無論聲明語句在哪里,都會被視為在作用域的開始處聲明的,如果代碼量過大,這很考驗開發(fā)者的能力(對于個人來說是記憶和邏輯上的折磨)。更不用說在同一個作用域內(nèi),可以多次使用var
聲明同一個變量,后面的聲明會覆蓋前面的。這些var的特性常常導致意外的bug。為了解決這些問題,ES6引入了let
和const
。

let: 塊級作用域的變量聲明方式
let
是在ES6的新特性。
1.let
聲明的變量僅在其作用域內(nèi)有效,如果在外部訪問會報錯。這種特性使得代碼更容易維護。
2.同一個作用域內(nèi)不可以多次使用let
聲明同一個變量,否則會報錯。
3.let只有在聲明語句之后才能使用。
這種特性使開發(fā)者可以更好地控制變量的作用范圍,邏輯更清晰,可讀性更好,定位錯誤也會比較容易。

const: 同樣具有塊級作用域
const
關(guān)鍵字也是在ES6中引入的新特性,與let
相似。
使用const
聲明的變量是常量,意味著一旦被賦值后,就不能再修改。常量的命名通常使用全大寫字母,并采用下劃線分隔單詞。其他特性和let 一樣。
常量的不可修改性可以避免錯誤的賦值操作,提高代碼的可靠性。
總結(jié):
let
和const
聲明變量已經(jīng)足夠應付大大部分場景,而且它們更安全、更易于維護。只有在特殊情況下(例如需要在函數(shù)作用域內(nèi)聲明變量),才使用var,個人是盡量不使用,在down一些老的源碼時也會根據(jù)情況盡量的把var修改為let 或const
。