变量 重复声明_JavaScript let和const声明

在函数作用域或全局作用域中通过关键字var声明的变量,无论在哪里声明,都会被当成在当前作用域顶部声明的变量,这就是JavaScript的变量提升机制。我们看下面的代码:

69b259d00ee55beac639162c0edc5a2c.png

变量声明

这种变量提升机制在开发时会给我们造成很多的困扰,ECMAScript 6引入了let声明,用法与var相同,不过用let声明的变量不会被提升,可以把变量的作用域限制在当前代码块中。

我们将上述代码中的变量用let进行声明,如下所示:

e844a8989d80f17ffa9db579bd43bd56.png

let声明

使用let声明变量,还可以防止变量的重复声明。例如在某个作用域下已经存在某个标识符,此时再使用let关键字声明它,就会抛出错误,如下所示:

32fbd964d76855eeeda3f84871cbfd0e.png

重复声明变量

同一作用域下,不能使用let重复定义已经存在的标识符,但如果在不同的作用域下,则是可以的,这一点请读者注意,如下所示:

aa5948f646799c923c87f13001492fa0.png

在不同的作用域下

ECMAScript 6还提供了const关键字,用于声明常量。每个通过const关键字声明的常量必须在声明的同时进行初始化,如下所示:

da828b8aa658cb57313b05e7ba9ff254.png

const声明常量

与let类似,在同一作用域下用const声明已经存在的标识符也会导致语法错误,无论该标识符是使用var,还是let声明的。

如果使用const声明对象,对象本身的绑定不能修改,但对象的属性和值是可以修改的,我们看下面的代码:

adf2720e55819b4170dec59380a777b0.png

用const声明对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值