#JavaScript 中使用 let 和 var 有什麼區別?
何時應該使用 let 而不是 var?為什麼?讓我們一起找出答案!
在現代 JavaScript 中,我們有三種方式來聲明變量並賦值:
const
let
var
在使用 JavaScript 中的變量時,我總是默認使用 const
。它確保變量的值無法重新賦值,因此更安全使用。
但在需要稍後重新聲明變量時,我總是使用 let
。
多年來我一直沒有使用 var
,對我來說它只是為了保持向後兼容性而存在,當我看到有人使用它時,我總是會感到疑惑。
為什麼呢?
首先,let
具有合理的作用域。
在幾乎所有流行的編程語言中都使用的塊作用域,它指定使用 let
聲明的變量作用域為最接近的塊。
相反,var
更奇怪,因為它具有函數作用域,這意味著使用 var
聲明的變量作用域限制在最接近的函數內。
這對實際應用有影響。例如,在 if
語句內聲明一個變量或將變量用作 for
循環的迭代器。使用 let
使該變量僅在這兩個塊內有效。然而,使用 var
則允許該變量在該塊之外也可用,這可能導致錯誤。
總是使用功能最少的工具,以確保對其擁有最大的控制。 追求極大的力量就需要承擔極大的責任。
喜歡使用 let
的另一個原因是變量提升。與 const
一樣,let
變量不具有變量提升,但在評估時會進行初始化。
相反,var
變量會被提升到函數的頂部,因此即使在其聲明之前的行中也可以使用它們。這很奇怪,對吧?
第三個原因:當您聲明一個已經存在的 let
變量時,您會收到一個錯誤(在 嚴格模式 下)。
最後,另一個重要的區別是:如果您在任何函數之外聲明一個 var
變量,它將被分配給全局對象(在瀏覽器內部為 window
)。let
不會以此方式工作;該變量是可用的,但不附加到全局對象,因此無法從文件外部訪問。