ES6新增语法 let const

本文深入探讨JavaScript中的let和const关键字,阐述它们与var的区别,包括块级作用域、变量提升、暂时性死区、不可重复声明以及常量约束。通过实例解析let如何实现作用域链,展示其在循环中的独特应用。同时,讨论了const声明常量的优缺点及注意事项,以及在实际开发中的最佳实践。
摘要由CSDN通过智能技术生成


              1:用let声明变量具有块级作用域,先声明再使用
            

  let num = 10;
             if(1==1){
                 let num=5;
                 console.log("块级作用域的num:"+num);//5
             }
             console.log("全局作用域的num:"+num);//10


         2:不存在变量提升
            

 console.log(num);//error
             let num=10;


              3:暂时性死区,未声明就使用
         

   let num = 10;
            if(1==1){
                console.log(num);//error
                let num=20;
            }


            4:let声明的变量 不能重复
      

     let num=10;
            let num=100;
            console.log(num);//error


            5:const  let 变量 const常量
    


            const PI = 3.14;
            PI = 123;//重新赋值就会出错
            console.log(PI);


            
            案例 块级作用域,作用域链(没有声明往上找)
            
          

  let arr = [];
            
            for(let i=0;i<3;i++){
                arr[i] = function(){
                    console.log(i);
                }
            }
            arr[0]();//0
            arr[1]();//1
            arr[2]();//2
            
            let num = 10;//顶级属性
            
            console.log(window.num);


var let const 三者区别:

  • var:
  1. 定义变量会有变量提升
  2. 定义变量可以反复定义,后面定义的会覆盖前面的
  3. 在循环中使用的时候,循环体外依然可以使用
  4. 在循环绑定事件过程中,var定义的变量无法保存,循环会在瞬间执行完
  • let:
  1. let定义的变量不会预解析,必须先声明再使用,否则会报错
  2. let不能定义已经定义过的变量
  3. let是块级作用域,函数内部使用let定义后,对函数外部无影响,简单说就是在一个{}里面生效
  4. 由于let是块级作用域,在循环绑定事件过程中let会在这个循环中生效,再次循环时let会重新定义生效
  • const:
  1. const定义的变量不会预解析,必须先声明再使用,否则会报错
  2. const定义的变量不允许修改
  3. 但是,在数组里面,const的值是允许被修改的,这是因为const存储的是地址,值的内容可以变化

 使用 let,const 的声明的变量不属性顶层对象,返回 undefined

 let一般应用于基本数据类型;const 一般应用于引用数据类型,也就是函数对象等。

首先const声明常量的好处,一是阅读代码的人立刻会意识到不应该修改这个值,二是防止了无意间修改变量值所导致的错误,另外其实js编译器也对const进行了优化,可以提高代码的执行效率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值