(ES6学习总结)let与const命令

let的特点大致总结有以下四点:

1.只在命令的代码块内有效,即作用域只在块级或子块中有效

如:for(let i=0;i<10;i++){

}

console.log("i:",i);//Uncaught ReferenceError: i is not defined

只在for循环块中有效


2.不存在变量提升

与var不同的是let不存在变量提升,如:

console.log(a);//undefined

var a=123

由于var存在变量提升,此处等价于:

var a;

console.log(a);

a=123;


console.log(i);//Uncaught ReferenceError: i is not defined

let i=123;

所以let不存在变量提升


3.暂时性死区,即在代码块区使用let命令声明变量之前,该变量不可用,如:

var a=123;

if(true){

    a=234;

    let a;//Uncaught ReferenceError: i is not defined

}

if(true){

    a=123;//Uncaught ReferenceError: i is not defined

    let a;

    console.log("a:",a);//undefined

    a=234;

    console.log("a:",a);//234

}


4.不允许重复声明

function foo(){

   let a=1;

   let a=2;

}//Uncaught SyntaxError: Identifier 'a' has already been declared

function foo(args){

   let args;

}//Identifier 'args' has already been declared


const一旦声明变量,必须立即初始化:

const a;//Uncaught SyntaxError: Missing initializer in const declaration

const声明后不可更改,对于简单类型来说是变量只想的那个内存地址不得更改,对于复杂类型来说,变量只想的内存地址视为指针,指针是固定的,但是其数据结构却不能控制,如:

const a=123;

a=234;//Uncaught SyntaxError: Missing initializer in const declaration

const a={};

a.b=123;

console.log(a.b);//123;

const b=[];

b.push('a');//成功

b.length=0;//成功

b=['aa']//Uncaught TypeError: Assignment to constant variable.

const与let一样拥有以上四个特性;

PS:最近开始深入学习ES6,虽然在项目中早就已经用到,但是发现还是有很多值得深究和注意的地方,所以决定重新学习认识ES6,主要深入研究阮一峰的《ECMAScript6入门》


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值