let 和 var 聲明變量的主要區別是作用域:let 聲明的變量僅在聲明所在塊級作用域內可見,而 var 聲明的變量具有全局或函數作用域。此外,let 不允許重新聲明,但允許重新賦值;var 允許重新聲明和賦值。
let 與 var 的區別
let 和 var 是 JavaScript 中聲明變量的兩種關鍵字,它們在作用域、提升和重新聲明方面具有以下關鍵區別:
作用域
var: var 聲明的變量具有全局作用域或函數作用域,具體取決于聲明的位置。
let: let 聲明的變量僅在聲明所在的塊級作用域(花括號)內可見。
提升
var: var 聲明的變量在執行代碼之前會被提升到函數或全局作用域的頂部。
let: let 聲明的變量不會被提升,它們僅在聲明所在的作用域內可用。
重新聲明
var: var 聲明的變量可以在同一作用域中重新聲明,并且會覆蓋先前的聲明。
let: let 聲明的變量不能在同一作用域中重新聲明,這會引發錯誤。
其他區別
除了上述主要區別外,let 和 var 還有以下其他區別:
重新賦值: let 聲明的變量可以重新賦值,而 var 聲明的變量可以重新賦值和重新聲明。
初始值: let 聲明的變量必須在聲明時初始化,而 var 聲明的變量可以不初始化,默認為 undefined。
示例
<code class="javascript">// 使用 var
function example1() {
var x = 10;
if (true) {
var x = 20; // 重新聲明和重新賦值
console.log(x); // 輸出: 20
}
console.log(x); // 輸出: 20
}
// 使用 let
function example2() {
let y = 10;
if (true) {
let y = 20; // 重新賦值
console.log(y); // 輸出: 20
}
console.log(y); // 輸出: 10
}</code>
登錄后復制
如例所示,var 允許在同一作用域中重新聲明和重新賦值變量,而 let 僅允許重新賦值。






