• ES6新增关键字:let和const及let的常用场景


    1、ES6:

    ● 我们所说的ES5和ES6其实就是在js语法的发展过程中的一个版本而已

    ECMAScript就是js的语法,ES6新增了一些功能

    2、let和const关键字 和var的区别

    ● 我们以前都是使用var关键字来声明变量的

    ● 在ES6的时候,多了两个关键字let和const,也是用来声明变量的

    ● 只不过和var有一些区别:

    (1)let和const不允许重复声明变量

    // 使用var的时候重复声明变量是没问题的,只不过就是后面会把前面覆盖掉

    1. var num = 100
    2. var num = 200

    // 使用let重复声明变量的时候就会报错了

    1. let num = 100
    2. let num = 200 //这里就会报错了

    // 使用const重复声明变量的时候就会报错

    1. const num = 100
    2. const num = 200 //这里就会报错了

    (2)let和const声明的变量不会在预解析的时候解析(也就是没有变量提升)

    // 因为预解析(变量提升)的原因,在前面是有这个变量的,只不过没有赋值

    1. console.log(num)//undefined
    2. var num = 100

    // 因为let不会进行预解析(变量提升),所以直接报错了

    1. console.log(num)//undefined
    2. let num = 100

    // 因为const不会进行预解析(变量提升),所以直接报错了

    1. console.log(num)//undefined
    2. const num = 100

    (3)let和const声明的变量会被所有代码块限制作用范围

    // var声明的变量只有函数能限制其作用域,其他的不能限制

    1. if (true){
    2. var num = 100
    3. }
    4. console.log(num)//100

     // let声明的变量,除了函数可以限制,所有的代码块都可以限制其作用域

    1. if/while/for/...)
    2. if (true) {
    3. let num = 100
    4. console.log(num) // 100
    5. }
    6. console.log(num) // 报错

      // const声明的变量,除了函数可以限制,所有的代码块都可以限制其作用域

    1. if/while/for/...)
    2. if (true) {
    3. let num = 100
    4. console.log(num) // 100
    5. }
    6. console.log(num) // 报错

    3、let和const的区别

    (1)let声明的变量的值可以改变,const声明的变量的值不可以改变

    1. let num = 100
    2. num = 200
    3. console.log(num)//200
    1. const num = 100
    2. num = 200 //这里就会报错了,因为const声明的变量值不可以改变(我们也叫做常量)

     但是对于改变用const定义的对象,当对象内容重新赋值时,不会报错

    那代码中obj.name = "linlin",给name重新赋值,是允许的不会报错;但是obj = {name:“linlin”},给对象重新赋值就报错了,原因是当你给name重新赋值,只是这个对象的内容改变了,这个对象内容存储在堆里面,obj只是等于一个地址而已,现在地址没变,所以就是obj没被重新赋值,但是obj={name:“linlin”}是从新给obj负值了,这个const就不允许了,就报错。

    (2)let声明的时候可以不赋值,const声明的时候必须赋值 

    1. let num
    2. num = 100
    3. console.log(num)//100
    const num //这里就会报错了,因为const声明的时候必须赋值

    4、let的常见使用场景

    120-案例-块级作用域_哔哩哔哩_bilibili

     

     

  • 相关阅读:
    [DevOps云实践] 彻底删除AWS云资源
    【前端必会】使用indexedDB,降低环境搭建成本
    【笔试训练】day11
    竞赛 基于机器学习与大数据的糖尿病预测
    Mac电脑上有什么好玩的格斗游戏 《真人快打1》可以在苹果电脑上玩吗
    密码学算法都是怎样实现的? 都有哪些实现方式?
    nextTick 使用场景
    Jetpack LiveData源码分析
    LRU淘汰缓存机制(LRU页面置换算法)HashMap+双向链表 C++实现
    数据处理时代,数据质量建设才是企业的生存之道
  • 原文地址:https://blog.csdn.net/a1598452168YY/article/details/127562250