01_let 和 const 命令

  • 不存在变量提升

  • 存在暂时性死区

    • typeof 不再是安全的操作符
    • 有些死区比较隐蔽
    • 本质
  • 不允许重复声明

  • 块级作用域

    • 为什么需要块级作用域
      • 变量外泄 内层变量可能会覆盖外层变量
      • 循环内部的变量变为全局
    • 块级作用域中可以声明函数吗
      • 不行 但是浏览器没有遵守 (ES5 规定,函数只能在顶层作用域和函数作用域之中声明,不能在块级作用域声明)
      • es6 之后可以
      • 使得 IIFE 没有必要了
  • const

    • 和 let 一样 不存在变量提升 存在暂时性死区
    • 声明之后的变量不能改变 内存地址不能改变
    • 指向的地址空间
    • 不允许重复声明
    • 拓展: 冻结对象中的所有对象 使得不能被更改 使用 Object.freeze 方法
  • ES6 声明变量的六种方法

    • var let const class import function
  • window 对象 顶层对象的属性

    • 在浏览器环境中 var 声明的变量会自动挂在到 window 上
    • let 、 const 、class 不会, var 和 function 会
    • 每个环境的顶层对象可能是不同的 不一定都是 window
      • 为了解决这个问题 es2020 新的提案 globalThis
Last Updated:
Contributors: hqchqc