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声明必须赋初始值,标识符一般为大写,值不允许修改。
相关推荐
用户0595401744620 分钟前
把AI对话记忆存储测试从手工改成Playwright+pytest,覆盖率从20%提到96%,回归时间缩短90%
前端·css
kyriewen27 分钟前
别再这样写TypeScript了——Code Review中最常见的8个反模式
前端·javascript·typescript
名字还没想好☜33 分钟前
Next.js ‘use client‘ 到底加在哪:Server/Client Components 边界与常见报错
开发语言·前端·javascript·react·next.js
午安~婉1 小时前
GitHub Token/ GitHub Stats统计显示图异常
前端·github·vercel·github token
码云之上1 小时前
AI Agent 工程化总览篇:从 Prompt 到 Harness
前端·人工智能
2501_926978331 小时前
以说明书 DNA 为模板——完整 AGI 的结构图景
前端·人工智能·经验分享·笔记·ai写作
IT_陈寒1 小时前
Vite静态资源引用这个坑我踩得有点疼
前端·人工智能·后端
程序员黑豆2 小时前
鸿蒙应用开发:AttributeModifier 使用教程
前端·harmonyos
codeniu2 小时前
TRAE Work 实战 | 从"有个想法"到线上Demo,我全程只靠对话就完成了
前端·trae
妙码生花2 小时前
从 PHP 到 AI + Golang,程序员自救转型手记(五十):增加管理员角色组管理
前端·后端·ai编程