📜  JavaScript 中的提升 MDN - Javascript (1)

📅  最后修改于: 2023-12-03 15:31:40.561000             🧑  作者: Mango

JavaScript 中的提升

JavaScript 中的提升是指在执行代码时,变量和函数的声明会被提升到代码的顶部。这意味着可以在声明之前使用它们,并且它们将被视为已经存在。

变量提升

当变量声明在函数或全局环境中时,它会被提升到代码的顶部,但实际的赋值仍然会在原始位置发生。

console.log(x); // undefined
var x = 10;

在上面的代码中,变量 x 在声明之前被打印出来,但仍然被视为已经存在。这是因为它被提升到代码的顶部。但是,由于它没有实际赋值,所以值为 undefined。

函数提升

函数提升与变量提升类似。函数声明会被提升到代码的顶部,并且可以在声明之前调用。

foo(); // "bar"
function foo() {
  console.log("bar");
}

在上面的代码中,函数 foo 在声明之前被调用,但仍然被视为已经存在。这是因为它被提升到代码的顶部。

注意事项

虽然变量和函数的声明会被提升,但它们的赋值仍然会保留在原始位置。

var x = 10;
console.log(x); // 10

if (true) {
  var x = 20;
}

console.log(x); // 20

在上面的代码中,变量 x 在 if 语句块内重新赋值为 20,但全局变量的值也被更改,因为变量声明被提升到了全局环境中。

总结

JavaScript 中的提升是一种行为,它使变量和函数的声明被提升到执行上下文的顶部。但赋值仍然会保留在原始位置。注意变量声明可能会被提升到全局环境,可能会导致变量重写。在编写 JavaScript 代码时,请务必了解这些注意事项。