第三十八关:新时代的秩序

任务目标:彻底告别 var,拥抱块级作用域

🦸‍♂️

JS 队长

我们之前学过,var 只有函数作用域。这导致它经常“红杏出墙”(泄漏到外面)。

letconst 拥有块级作用域 (Block Scope)

只要被 { ... } 包围,它们就出不去了!

{ let x = 2; } // 这里不能用 x

🛑 禁止重婚 (重复声明)

var 你可以反复声明同一个变量,容易造成混乱。

letconst,同一个作用域内只能声明一次。

let x = 2; let x = 3; // ❌ 报错:x 已经被声明了

🔒 Const 的小秘密

🐛

巴格

你说 const 定义的东西不能变。那为什么我能改对象的属性?

const car = {type:"Fiat"};

car.type = "BMW"; // 竟然没报错!

JS 队长

问得好!const 锁住的是变量的引用(门牌号),而不是房子里的东西。

你不能换房子 (car = ...),但你可以装修房子 (car.type = ...)。

🦸‍♂️

🎮 任务:谁能存活?

看下面的代码,判断 console.log(i) 会输出什么。

for (let i = 0; i < 5; i++) { // 这里的 i 只属于循环内部 } console.log(i); // 这里会发生什么?