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声明必须赋初始值,标识符一般为大写,值不允许修改。
相关推荐
No8g攻城狮10 小时前
【前端】Vue 中 const、var、let 的区别
前端·javascript·vue.js
文心快码BaiduComate10 小时前
Comate搭载Kimi K2.6,长程13h!
前端·后端·程序员
豹哥学前端10 小时前
新手小白学前端day4: Position定位
前端
fishmemory7sec10 小时前
Vue大屏自适应容器组件:v-scale-screen
前端·javascript·vue.js
饺子不吃醋10 小时前
Promise原理、手写与 async、await
前端·javascript
PILIPALAPENG10 小时前
第3周 Day 2:Function Calling —— 让 Agent 听懂人话,自己干活
前端·人工智能·python
袋鼠云数栈UED团队11 小时前
基于 OpenSpec 实现规范驱动开发
前端·人工智能
JarvanMo11 小时前
GetX 作者的 GitHub 账号被封,又默默恢复了——但问题远没有解决
前端
大黄说说11 小时前
HTML5语义化标签:从div到article与section的进化之路
前端·html·html5
帅小伙―苏11 小时前
力扣42接雨水
前端·算法·leetcode