技术频道导航
HTML/CSS
.NET技术
IIS技术
PHP技术
Js/JQuery
Photoshop
Fireworks
服务器技术
操作系统
网站运营

赞助商

分类目录

赞助商

最新文章

搜索

实例详解何时使用JS中的let、var和const

作者:admin    时间:2022-5-11 11:36:31    浏览:

在前面文章曾介绍过JS三种声明方式:var,let,const,在本文中,将进一步探讨JS中的变量varletconst。本文将帮助你理解为什么要使用 constlet 、 var 以及在哪里使用它们。

 实例详解何时使用JS中的let、var和const

var

var 在 Javascript 中一直使用,而 letconst 在 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 letvar的改进版本。使用 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 关键字的变量,则很难调试代码。所以开发人员最喜欢的是 constlet,特别是 const 使代码更干净,并且易于调试错误。

结论

在结束之前,先总结一下刚刚了解的内容:

var:函数范围,可以更新和重新声明。

let:块作用域,可以更新,但不能重新声明。

const:块作用域,不能更新和重新声明。

相关文章

标签: let  var  const  
x
x
  • 站长推荐