JavaScript 中 var 和 let 有什么区别?
在 javascript 中,使用 var 和 let 关键字可以声明和定义变量。然而,这两个关键字之间存在着一些关键的区别:
作用域
- var:声明的变量具有全局作用域,这意味着可以在代码的任何位置访问这些变量。
- let:声明的变量具有局部作用域,这意味着只能在定义它们的块内访问这些变量。
重新声明
- var:可以多次重新声明(但在同一作用域内)具有相同名称的变量。
- let:在同一作用域内重复声明具有相同名称的变量会报错。
重新赋值
- var:声明的变量可以被重新赋值。
- let:声明的变量也可以被重新赋值。
常量
javascript 还提供了一个 const 关键字,用于声明常量变量。常量变量不能被重新赋值,并且具有与 let 相同的作用域(即局部)。
以下是一个简单的示例,来说明 var 和 let 之间的区别:
// 使用 var 声明全局变量 var x = 10; // 在函数内使用 var 声明局部变量 function test() { var y = 20; console.log(x); // 10(访问全局变量) console.log(y); // 20(访问局部变量) } test(); // 在函数外访问局部变量将导致错误 console.log(y); // referenceerror: y is not defined
而在以下示例中,使用 let 声明局部变量:
// 使用 let 声明局部变量 function test() { let x = 10; // 局部变量 x console.log(x); // 10 } test(); // 在函数外访问局部变量将导致错误 console.log(x); // ReferenceError: x is not defined
在这个示例中,函数 test() 内声明的变量 x 仅在该函数内可用,而在函数外部访问该变量会引发错误。