ES6详细解析

2.1、let

let 关键字用来声明变量,使用 let 声明的变量有几个特点:

  1. 不允许重复声明

  2. 块儿级作用域

  3. 不存在变量提升

  4. 不影响作用域链

  5. 暂时性死区

6)不与顶级对象挂钩

应用场景:以后声明变量使用 let 就对了

javascript 复制代码
  <script>
      //声明变量格式
      let a;
      let b, c, d;
      let e = 100;
      let f = 521,
        g = "iloveyou",
        h = [];


      //1. 变量不能重复声明,防止变量被污染
      // let star = '王老师';
      // let star = '余老师';  //会报错


      //2. 块儿级作用域  避免暴露成全局作用域,影响别人
     {
          let girl = '王老师';
          var boy='张老师'
      }
      console.log(girl);//报错
      console.log(boy);//张老师
      
      // if  else  while  for  这些语句里,都是有块级作用域的
       //for 循环的计算器,就很合适let命令
      for(let i=0;i<3;i++){
        console.log(i);//0,1,2
      }
      console.log(i);//报错


      //3. 不影响作用域链
      //作用域链:内层作用域 ------> 外层作用域 ------> 全局作用域
      {
        let school = "bdqn";
        function fn() {
          console.log(school);//在fn作用域没有,还是会向上寻找
        }
        fn();
      }


      //4. 不存在变量提升
      // console.log(song);
      // let song = '恋爱达人';
      
        // 5、let暂时性死区
      var a = 1;
      if (true) {
        a = 2; // 报错,初始化前不能访问a,也就是在同一个作用域中,不可以访问,再定义
        let a = 1;
      }
      
       // 6、 不与顶层对象挂钩
      var myname='zhangsan'
      let myage=18
      console.log(window.myname);//zhangsan
      console.log(window.myage);//undefined
      
    </script>

2.2、const

const 关键字用来声明常量,const 声明有以下特点

(1) 声明必须赋初始值

(2) 标识符一般为大写(建议)

(3) 不允许重复声明

(4) 值不允许修改

注意: 对象属性修改和数组元素变化不会触发 const 错误, 对象地址不可改变。

(5) 块儿级作用域

(6)、 不与顶层对象挂钩

应用场景:对于不希望被修改的值,用const,其他时候用let

javascript 复制代码
    <script>
        //声明常量
        const SCHOOL = 'bdqn';
        //注意事项
        //1. 一定要赋初始值
        // const A;
        //2. 一般常量使用大写(潜规则)
        // const a = 100;
        //3. 常量的值不能修改
        // SCHOOL = 'bdqn';
        //4. 块儿级作用域
        // {
        //     const PLAYER = 'UZI';
        // }
        // console.log(PLAYER);
        //5. 对于数组和对象的元素修改, 不算做对常量的修改, 不会报错
        const TEAM = ['UZI','MXLG','Ming','Letme'];
        // TEAM.push('Meiko');
          // 6、 不与顶层对象挂钩
      var myname = "zhangsan";
      const myage = 18;
      console.log(window.myname); //zhangsan
      console.log(window.myage); //undefined
    </script>

面试题 1.let和const的区别(/var,let,const的区别?)

let声明的变量可以改变,值和类型都可以改变(let:声明的是变量);

const声明的常量不可以改变,这意味着,const一旦声明,就必须立即初始化,不能以后再赋值,当然数组和对象等复合类型的变量,变量名不指向数据,而是指向数据所在的地址。

const只保证变量名指向的地址不变,并不保证该地址的数据不变。

let和const和var的区别

  1. let ,const声明的变量会产生块作用域,var 不会产生块作用域
  2. 不同代码块之间的变量无法互相访问
  3. 注意: 对象属性修改和数组元素变化不会出发 const 错误 (数组和对象存的是引用地址)
  4. 应用场景:声明对象类型使用 const,非对象类型声明选择 let
  5. cosnt声明必须赋初始值,标识符一般为大写,值不允许修改。
相关推荐
ZC跨境爬虫1 天前
跟着 MDN 学CSS day_39:(Flexbox 弹性盒子核心机制)
前端·css·ui·html·tensorflow
小陈同学呦1 天前
前端如何处理订单状态导航的数据竞态问题
前端·javascript
喵个咪1 天前
GoWind Toolkit 前端代码生成|Vue3(ElementPlus/Vben)、React(AntDesign)全自动一键生成教程
前端·vue.js·react.js
摆烂大大王1 天前
玩转 OpenClaw:用 TaskFlow + Heartbeat 打造自动化工作流
前端·人工智能·自动化
zhangxingchao1 天前
AI 大模型核心六:量化、Workflow 与 Agent、多轮 RAG
前端·人工智能·后端
梦想的颜色1 天前
TypeScript 完全指南(上):从零开始掌握类型系统
前端·typescript
之歆1 天前
Day01_ES6+ 专业指南:从基础到实战的现代JavaScript开发(下)
前端·javascript·es6
lichenyang4531 天前
鸿蒙 MVVM 实战:从 Demo 到工程化,聊聊登录、状态管理与埋点系统设计
前端
IT_陈寒1 天前
Vite打包时遇到的坑,原来问题出在这里
前端·人工智能·后端
kyriewen1 天前
AI生成代码快如闪电,但我修了三个小时——它到底帮了谁?
前端·javascript·ai编程