ES6之变量与解构赋值

本文详细介绍了ES6中的变量声明,包括var、let和const的使用及区别,强调了块级作用域和暂时性死区的概念。此外,重点讲解了解构赋值,涵盖数组、对象、字符串、数值和布尔值等多种情况,揭示了解构赋值的灵活性和实用性。
摘要由CSDN通过智能技术生成

ES6变量

变量声明

var (函数作用域):可以重新赋值,重新定义
let (块级作用域): 不能重新声明,可以修改
const (块级作用域):不能重新声明,不能修改–常量

    <script>
        // var 是全局变量,
     for(var i = 0; i < 10 ; i++ ){
   
         console.log(i);//因为是全局变量,在执行之后i= 10
     }
     for(let i = 0; i < 10 ; i++){
   
         console.log(i);
         setTimeout(function(){
   
             console.log(i);//let 是块级,i=0,1,2,3...9
         },1000)
     }
    </script>
变量提升

var命令会发生“变量提升”现象,即变量可以在声明之前使用,值为undefined。这种现象多多少少是有些奇怪的,按照一般的逻辑,变量应该在声明语句之后才可以使用。

为了纠正这种现象,let命令改变了语法行为,它所声明的变量一定要在声明后使用,否则报错。let没有变量提升

    console.log(fo);//输出undefined
    var fo = 3;
    console.log(ba);//报错ReferenceError
    let ba = 1;
暂时性死区

ES6 明确规定,如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。
总之,在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区“简称TED

  if (true) {
   
      // TDZ开始
      tmp = 'abc'; // ReferenceError
      console.log(tmp); // ReferenceError
      //在没有声明变量之前tmp都是错误的
      let tmp; // TDZ结束
      console
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值