什么是hoisting?

Hoisting 是 JavaScript 中的一个特性,它指的是变量和函数声明在代码执行之前会被"提升"(Hoist)到它们所在作用域的顶部。这意味着你可以在声明变量或函数之前就使用它们。

具体来说,Hoisting 的工作原理如下:

变量声明提升:
    使用 var 声明的变量会被提升到它所在作用域的顶部,但赋值部分不会被提升。
    使用 let 和 const 声明的变量也会被提升,但是与 var 不同的是,它们不会被初始化为 undefined,而是保持"未初始化"的状态,如果在声明之前访问它们,会抛出 ReferenceError。

函数声明提升:
    使用函数声明语法 (function foo() {...}) 声明的函数会被完全提升,包括函数名和函数体。
    使用函数表达式 (const foo = function() {...}) 声明的函数,只有变量声明会被提升,而函数赋值部分不会被提升。

下面是一个例子,演示 Hoisting 的工作原理:


console.log(x); // 输出 undefined
var x = 5;

foo(); // 输出 "Hello, world!"
function foo() {
  console.log("Hello, world!");
}

在上述代码中,变量 x 的声明被提升到了顶部,所以可以在赋值之前访问它,只不过它的值是 undefined。而函数 foo() 的整个声明(包括函数名和函数体)也被提升到了顶部,所以可以在声明之前调用它。

理解 Hoisting 有助于你更好地理解 JavaScript 的工作原理,并编写出更加可靠和预期的代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值