任务目标:彻底告别 var,拥抱块级作用域
我们之前学过,var 只有函数作用域。这导致它经常“红杏出墙”(泄漏到外面)。
let 和 const 拥有块级作用域 (Block Scope)。
只要被 { ... } 包围,它们就出不去了!
用 var 你可以反复声明同一个变量,容易造成混乱。
用 let 或 const,同一个作用域内只能声明一次。
你说 const 定义的东西不能变。那为什么我能改对象的属性?
const car = {type:"Fiat"};
car.type = "BMW"; // 竟然没报错!
问得好!const 锁住的是变量的引用(门牌号),而不是房子里的东西。
你不能换房子 (car = ...),但你可以装修房子 (car.type = ...)。
看下面的代码,判断 console.log(i) 会输出什么。