前端 变量声明提升vs函数声明提升
时间: 2024-10-18 11:08:41 浏览: 25
前端中的变量声明提升(hoisting)和函数声明提升(function declaration hoisting)是指在JavaScript中,尽管按照语法顺序,变量和函数的声明会被移动到它们所在作用域的顶部(即程序的开始位置),但这并不意味着它们立即被初始化或执行。
**变量声明提升**:
当你在JavaScript中声明一个变量,例如`let`, `const` 或 `var`,实际上会在当前作用域的顶部被创建,但是它的值会被设置为`undefined`,直到你在后续代码中为其赋值。这意味着,无论你在代码中何处声明变量,它都是“可见”的,即使在声明之前尝试访问也不会报错(但会得到`undefined`)。
**函数声明提升**:
相比之下,函数声明会被提升到作用域顶部,你可以像这样编写代码:
```javascript
foo(); // 调用会正常工作,虽然foo在下面才定义
function foo() {
console.log("Hello from a declared function");
}
```
在这里,即便函数foo在调用之前声明,浏览器仍然能识别并执行这个函数,不会抛出错误。
阅读全文