ECMAScript6学习笔记-let,const命令

1.let命令,用于声明变量,用法类似与var命令,但是所声明的变量,只在let命令所在的代码块有效。

{
    var a=1;//var命令声明赋值一个变量
    let b=2;//let命令声明赋值一个变量
}
a //1
b //ReferenceError:b is not defined

2.let命令不存在变量提升,即变量必须在声明之后才可以使用,否则会报错。var命令在声明之前也可以使用,值为undefined。

a;//undefined
b;//ReferenceRrror:b is not defined

var a=1;
let b=2;

3.暂时性死区。只要块级作用域内使用了let命令,let命令就绑定了这个“区域”,不再受外部的影响。

var temp="adc";
{
    console.log(temp);//ReferenceError:temp is not defined
    let temp="123";
}

上面代码虽然之前声明了全局变量temp,但是块级作用域内let命令又声明了一个temp变量,后者绑定了这个块级作用域,在变量声明之前使用变量,导致报错。
ES6规定,块级内使用let,const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域,凡是在声明之前使用这些变量,都会报错。
4.let命令,不允许在相同作用域内重复声明一个变量。

function func(arg){

    let arg;//报错

    var a;
    let a;//报错

    let b;
    let b;//报错
}

5.const命令声明一个只读的常量。一旦声明,常量的值就不能再改变。所以,const声明的变量,必须立即初始化,不能留到以后再赋值,否则会报错。

const temp="abc";
temp="123";//报错 重复赋值

const temp;// SyntaxError: Missing initializer in const declaration

6.const命令与let命令一样,只在声明的块级作用域内有效,声明的变量也是不提升,同样存在暂时性死区,不可以重复声明。

const temp="abc";
temp="123";//报错 重复赋值

const temp;// SyntaxError: Missing initializer in const declaration

{
    const temp="abc";//只在声明的块级作用域内有效
}
console.log(temp);//ReferenceError:temp is not defined.

console.log(abc);//报错,没有变量提升
const abc="abc";

var temp="abc";
{
    consolt.log(temp);//报错,暂时性死区
    const temp="abc";
}

var abc="abc";
const abc="abc";//报错,不可重复声明

7.const命令本质上保证的是变量指向的内存地址不可改变。对于简单数据类型(数值,字符串,布尔值),值就存在变量指向的内存地址,因此等同于常量。对于复杂数据类型(对象,数组),变量指向的内存地址,保存的只是一个指针,const只能保障这个指针是固定的,至于它指向的数据结构是不是可变的,则不能完全控制。

const a={};
//为a添加一个属性,可以成功
a.prop=123;//可执行
a.prop;//123
//将a指向另一个对象,就会报错
a={};//TypeError:"a" is read-only

const b=[];
//往数组中添加一个对象
b.push(123);//可执行
//将b指向另一个数组,报错
b=["abc"]

参考:ESMAScript 6 入门

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值