oracle 必须声明标识符_JavaScript let和const声明

  • Post author:
  • Post category:java


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

8139a21c34c5d7b23c557019a5ea9266.png

变量声明

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

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

823a0439af53ff287b73c3834bd5d87a.png

let声明

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

8ec87898f43ac9b10dbe887931523aa3.png

重复声明变量

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

d7b7c7cdc407b1bfaa85331b73cbb1eb.png

在不同的作用域下

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

0bc06fa209f74376f7fa749a9a7e7195.png

const声明常量

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

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

3574810bbca38d86d3cd207b5aa2d77a.png

用const声明对象