📅  最后修改于: 2023-12-03 15:35:33.974000             🧑  作者: Mango
在Javascript中,变量的声明方式有三种: var
、let
、const
。这三种方式的使用场景和特性有些不同,接下来我们一一介绍。
var
是早期Javascript中声明变量的方式。它的作用域是函数级别的,即只有在函数内部才能访问它。而在函数外部声明的变量会变成全局变量,容易引发作用域污染的问题。
function foo(){
var x = 10;
if (true) {
var x = 20;
console.log(x); // 20
}
console.log(x); // 20
}
foo();
在上述示例中,var
声明的 x
变量作用域为整个函数,因此在 if
语句内部重新对 x
赋值后,会影响到函数内 x
变量的值。
let
是为了解决 var
带来的问题而引入的新的声明方式。它作用的范围是块级别的,即在块内部有效,包括 for
、if
等语句块,则在函数内部声明的变量不会影响到全局作用域。
function foo(){
let x = 10;
if (true) {
let x = 20;
console.log(x); // 20
}
console.log(x); // 10
}
foo();
在上述示例中,let
声明的 x
变量作用域为 if
语句块内,因此在 if
语句块内部重新对 x
赋值后,不会影响到函数内 x
变量的值。
const
是用来声明常量的,与 let
类似,它作用的范围也是块级别的。但与 let
不同的是,用 const
声明的变量必须在定义时初始化,并且不能再次赋值。
function foo(){
const x = 10;
if (true) {
const x = 20;
console.log(x); // 20
}
console.log(x); // 10
}
foo();
在上述示例中,const
声明的 x
变量应用场景通常是声明一个不会改变的值,类似于数学中的常量。
var
声明的变量作用域是函数级别的,可以被重新定义、覆盖和改变。let
声明的变量作用域是块级别的,不可以被重新定义但可以被覆盖和改变。const
声明的变量作用域是块级别的,不可以被重新定义、覆盖和改变,用于声明一个不会改变的值。