es6常用特性———let const

之前我们学习过的定义变量的关键字有哪些呢?var function,
今天我们要来看的是es6中的let 和const关键字,首先来看let,

let基本用法

let命令只在其所在的代码块内有效。

       {
            let a = 10;
            var b = 20;
            console.log(a);  //10
        }
        console.log(a);  //a is not defined
        console.log(b);  //20

在上面代码中,分别用var let 声明了两个变量,在代码块之外输出这两个变量,结果可以看到,var声明的变量输出了正确的值,let声明的变量则报错,在代码块内则会输出正确结果,说明let只在其所在的代码块内有效。

let与var的区别:

1.var是全局声明,let是块级作用的,只适用于当前代码块。

2.var会变量提升。let不会,(必须先定义,在使用)。

3.var 会造成重复赋值,let 不能重复声明同一个变量。

4.var定义的变量会作为window对象的属性,let定义的变量则不会。

5.let中有暂时性性死区:
暂时性死区:只要块级作用域内存在let命令,它所声明的变量就不再受外部的影响。ES6 明确规定,如果区块中存在let命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。

const基本用法

1.const定义的变量不可以重复赋值,而且必须初始化。

const A;
console.log(A);//error

变量a未初始化,直接会报错。而使用var和 let声明的变量未初始化输出时显示undefined。
2.const和let一样,是块级作用的,只适用于当前代码块。

    { const B = 1; }
    console.log(B)// B is not defined

3.const声明的变量称为常量,常量为不可改变的,且一般使用大写标识。

4.const声明的变量不可变,但堆中的值可变,若想堆中的值不变,需要使用object.freeze冻结。

     //堆中值可变
        const arr = [100, 200];
        arr[0] = 10;
        console.log(arr[0]);  //10 
        
      //冻结后不可变
        arr1 = Object.freeze([100,200]);
        console.log(arr1);
        arr1[0] = 10;
        console.log(arr1[0]);  //100
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值