本文详解为何跨 `
在 JavaScript 中,var 声明确实会被“提升”(hoisted),但这并不意味着变量在任意位置都可安全访问——它只在
当前作用域的顶部被声明
(初始化为 undefined),而非“全局可见”。关键点在于:
每个
等价于:
var x; // 提升:声明被移至作用域顶部,值为 undefined
console.log(x); // 此时 x 已声明但未赋值 → undefined
x = 10; // 赋值发生在原位置var x; // 提升:声明被移至作用域顶部,值为 undefined
console.log(x); // 此时 x 已声明但未赋值 → undefined
x = 10; // 赋值发生在原位置