单元二之第六章let,const,var

56 阅读1分钟

var 的变量提升

代码

for (var i = 0; i < 3; i++) {
  setTimeout(function () {
    console.log("i");
  }, 1000 * i);
}
// 返回3,3,3

for (let i = 0; i < 3; i++) {
  setTimeout(function () {
    console.log("i");
  }, 1000 * i);
}
// 返回0,1,2
  • 原因
    • let 在 for 循环的标头中使用,它不仅声明,为每次迭代重新声明了一个新的 i => 当函数运行时,并没有查看同一个变量

let 和 const 的使用场景

  • const

    • 常使用在声明函数中
  • let

    • 在块作用域中使用时常使用 let

全局变量

  1. 全局变量不会被回收
    1. 原因: 为了方便其他地方调用

问题

  1. 将大多数变量声明在全局作用域中,容易出现的问题
  1. 会导致内存泄漏
  2. 可以在任何地方更改 => 难最终
  3. 容易炒成冲突,引起碰撞
  4. 阻碍模块化思维