潜入理解ES6-let、const、var

257 阅读1分钟

传统声明var

  • 变量提升
  • 声明即初始化
  • 全局作用域声明时,属于顶层对象的属性。在浏览器环境下,属于window的属性

对比let

  • 块级作用域
  • 无变量提升
  • 暂时性死区
  • 全局作用域声明时,不属于顶层对象(window、global)的属性

常量声明

  • 声明时即初始化(赋值)
  • 块级作用域
  • 基础类型无法修改,对象可以修改(数组也可以)

let在for循环中使用

  • 每次循环会创建一个新的绑定

for...in 和 for...of

  • for...in用来遍历对象
    • 每次遍历key
  • for...of用来遍历数组
    • 每次遍历value
    • 不可以直接遍历对象,结合Object.keys()遍历对象