Skip to content

在学习 JavaScript 的时候,变量的声明用的是 var 关键字,其实有以下几个问题

  • 允许变量的重复声明,导致数据被覆盖
  • 预编译阶段的变量提升会导致一些奇奇怪怪的数据访问,同时预编译阶段的处理还带来了闭包问题
  • 全局变量直接挂载到 window 对象上,直接导致了污染全局对象

如果读者接触过其他编程语言,就会发现 JS 的语法太过松散,比如允许重复声明变量,比如允许在声明之前读取变量,这在其他编程语言中是非常扯淡的,也是不合逻辑的。同时,闭包问题也是非常麻烦的,在前面读者应该见过这样一个问题,就是使用 for 循环给多个元素绑定点击事件的时候,例如点击时输出 i,结果每一次 i 都是同样的值,这其实就是变量提升导致的问题。

以笔记为镜,可以知得失