实例详解何时使用JS中的let、var和const
作者:admin 时间:2022-5-11 11:36:31 浏览:在前面文章曾介绍过JS三种声明方式:var,let,const,在本文中,将进一步探讨JS中的变量var
、let
和const
。本文将帮助你理解为什么要使用 const
和 let
、 var
以及在哪里使用它们。
var
var
在 Javascript 中一直使用,而 let
和 const
在 ES6 版本中被引入。使用var
变量,你可以将值重新分配给变量,也可以使用 var
关键字重新声明变量。
例子:
var b = "Hello"
var b = "Hey" // 用户可以使用 var 关键字重新声明它
b = "nice" // 你也可以为变量重新赋值
范围
var
关键字具有全局作用域或函数作用域。这意味着如果任何带有 var
关键字的变量被全局声明(在函数外部),那么它可以在函数内部访问,也可以全局访问。看例子就明白了。
示例 1
var b = "你好"
function Checkb(){
console.log(b)
}
console.log(b);
说明:在上面的示例中,可以看到带有 var
关键字的变量“b
”是全局声明的,我们尝试在函数内部两次获取值,第二次在全局(函数外部)获取值,因此两种方式都得到了正确的结果。查看输出:
"你好"
"你好"
但是如果在函数内部声明了带有 var
关键字的变量“b
”,那么它只能在函数内部访问,不能在函数外部访问,并引发引用错误。
示例2
function f() {
var b = "你好"; // 可以在这个函数中任何地方访问 b
console.log(b)
}
f();
console.log(b); // b 不可访问
// 因为在函数之外
输出
解释
在第二个例子中,变量“b
”是在函数内部声明的,所以我们尝试在函数内部和外部获取它一次。第一个我们得到了预期的结果,但第二个我们得到了 ReferenceError
,因为带有 var
关键字的变量在函数之外是不可访问的。
所以我们知道了全局作用域,var
关键字也有函数作用域。
let
正如上面提到的,在 ES6 中引入了let
。let
是var
的改进版本。使用 let
关键字,可以将值重新分配给变量,但不能使用 let
关键字重新声明变量。
例子
let b = 1
let b = 2 //错误~用户不能再次重新声明变量
b = "0" // 你可以重新赋值给变量
解释
变量“b
”已经用 let
关键字声明了,所以不能重新声明它。如果这样做,会得到 SyntaxError( b has been defined )
,但是可以像上面所做的那样将值重新分配给变量。
范围
let
有块作用域,{}
里面的任何东西都被认为是一个块。块作用域意味着如果在块内声明了“b
”变量,那么它在块外是不可访问的。
例子:
let c = 10
if (c == 10) {
let a = "你好"
console.log(a)
}
console.log(a)
输出
你好
ReferenceError: a is not defined
解释
我们试图在声明“a
”的块中获取“a
”的值,因此我们得到了预期的值。但是第二次我们没有得到预期的值,而是得到了 ReferenceError
,因为“a
”是在块内声明的,如果我们尝试在块外访问它会显示错误。发生这种情况是因为使用 let
关键字声明的任何变量都变成了块作用域。
const
ES6
中还引入了 const
关键字。const
是不言自明的,它是一个常量,它保持恒定值。虽然let
的性质与const
有很大不同,但它们都有很多相似之处,就像它们都具有块作用域一样。const
关键字具有与let
关键字相同的所有属性,除了用户无法更新它的属性。请参阅下面的示例:
//let
let a = "john"
a = "micheal" //值被更改
//const
const b = "red"
b = "blue" //会提示错误因为不能被更改
使用 const
关键字,不能重新分配值,也不能用 const
重新声明变量。如果这样做会提示错误。
例子
const b = "red"
const b = "green" // 不允许重新声明
b = "yellow" // 不允许重新赋值
范围
正如之前提到的, const
也有像 let
这样的块作用域。块范围是什么,上面已经说清楚了。
例子
{
const x = 9
console.log(x)
}
console.log(x)
输出
9
ReferenceError: x is not defined
何时使用var、let和const
使用 const
关键字,代码变得更干净,使用 var
关键字,代码变得混乱,因为如果在长代码中错误地将值重新分配给使用 var
关键字的变量,则很难调试代码。所以开发人员最喜欢的是 const
和 let
,特别是 const
使代码更干净,并且易于调试错误。
结论
在结束之前,先总结一下刚刚了解的内容:
var
:函数范围,可以更新和重新声明。
let
:块作用域,可以更新,但不能重新声明。
const
:块作用域,不能更新和重新声明。
相关文章
- 站长推荐