ES6(一) let 与 const 关键字

ES6中新增的两种声明变量的方法  let关键字和const 关键字,下面我们来逐一了解。

目录

一、使用let 关键字声明变量特点

二、 使用 const 关键字声明常量特点 

三、let、const、var 的区别

 


一、使用let 关键字声明变量特点

1、具有块级作用域

if (true) {
//因为这个 num 使用 let 关键字定义的,所以只能在这个 if 的 {} 内使用
     let num = 100
     console.log(num);
 }
  console.log(num);  //结果为第一个100  第二个报错

 上述代码中,变量a只能在大括号中使用, 块级作用域的好处是在业务逻辑比较复杂的时候,能够防止内部变量覆盖外层变量。var 关键字是不具备块级作用域这个特点的。下面来看一下var  声明变量的例子。

if(true) {
   var abc = 100
}
console.log(abc);     //打印结果为100

由结果可以看到块级作用域对 var 关键字并没有产生影响。

2、不存在变量提升

console.log(a);
let a = 100;   //打印结果出错

 正确的写法应该是先声明再使用

let a = 100;
console.log(a);    //打印结果 100

3、具有暂时性死区

var tmp = 123;
if(true) {
    console.log(tmp);     //undefined
    let tmp = 456 ;  
}

  打印结果会显示未定义,这是为什么那?正是因为let 不存在变量提升,所以if 语句内部打印 tmp 结果是没有定义的,又因为一旦在块级作用域内声明变量,变量就会和块级作用域进行绑定,在块级区域内的变量和外部声明的变量是没有关系的,所以最终的结果就是 undefined.

二、 使用 const 关键字声明常量特点 

const作用:声明常量,常量就是值(内存地址)不能变化的量

1、具有块级作用域

if(true){
    const a = 10;
}
console.log(a)    //a is not defined

如以上代码显示,在if 语句中声明常量,外部是找不到的。

 2、声明常量时必须赋初始值

const A;  //Missing initializer in const declaration

上述代码报错就表示了const 声明常量时必须赋初始值,正确的声明方法如下:

const A = 111;
console.log(A);  //打印结果为 111

3、常量赋值后,值不能修改

分为两种情况:对于基本数据类型和复杂数据类型情况是不一样的。先看基本数据类型的一个例子。

const A = 111;
A = 222;   // Assignment to constant variable.

通过上面代码报错得知,一旦使用const 进行常量赋值后,是不可以改变的。

const arr = [100,200];
arr[0] = "a";
arr[1] = "b";
console.log(arr);     //["a","b"]
arr = ["a","b"];   //Assignment to constant variable.

 

首先利用 const 声明了一个 arr 数组,然后利用下标值更改对应的值是可以更改成功的,因为这个 操作并没有更改 arr 常量在内存中的存储地址。接下来的代码是给arr 常量重新赋值,赋的值为新数组,打印的结果就是不被允许的,因为这个操作改变了 arr 常量在内存中的存储地址。所以:对于复杂数据类型来说,内部的值是可以更改的,但是不可以重新赋值

三、let、const、var 的区别

1、使用 var 声明的变量,其作用域为该语句所在的函数内,且存在变量提升现象

2、使用 let 声明的变量,其作用域为该语句所在的代码块内,不存在变量提升

3、使用 const 声明的常量,在后面出现的代码中不能在修改该常量的值

varletconst
函数作用域块级作用域块级作用域
变量提升不存在变量提升不存在变量提升
值可以更改值可以更改值不可以更改

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值