const phrase = 'Hello';
if (true) {
const user = 'John';
var sayHi = () => {
console.log(`${phrase}, ${user}`);
};
}
sayHi(); // Hello, John
console.log(user); // ReferenceError: user is not defined
user 和 sayHi 都定义在 if
block 内,但是 sayHi 在 block 外可用,同时 user 不可用。为什么?
最佳答案
每当您使用 var
定义一个变量时,该变量就会被提升——这意味着它的声明被移动到当前作用域的顶部。
然而,对于使用 let
/const
创建的作用域变量,情况并非如此,其中变量仅在它们创建的范围内定义
关于javascript - 为什么代码片段会这样输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57954630/