let和const

116 阅读1分钟

let和const

// 注意:下文指的声明变量一律指用let或const命令声明的变量

一. 不允许重复声明
  • let和const声明的变量在同一作用域内不能重复声明
二. 不存在变量提升
三. 暂时性死区
  • 只要在块级作用域存在let或const命令,它所声明的变量就绑定了这个快作用域,外部不会影响这个变量
  • 由于不存在变量提升,因此在声明变量前使用该变量会报错
  • 声明变量前使用该变量的多行代码称为该变量的死区,直到遇到声明结束死区
四. typeof
  • 原本typeof可用于检测变量类型
  • 但由于暂时性死区的存在,如果在声明变量前使用typeof会报错
  • 但不声明变量使用typeof只会打印undefined
五. 函数
  • 块级作用域内声明的函数类似于let

  • 但在es6的浏览器有下面三条规则

    • 块级作用域内可以声明函数
    • 函数声明类似于var,即会提升到全局作用域或函数作用域的头部
    • 同时,函数声明还会提升到所在的块级作用域的头部
  • 块级作用域内可以声明函数,但不推荐,如果确实需要,应该写成函数表达式的形式

\