前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaScript 中的Hoisting是什么?

JavaScript 中的Hoisting是什么?

作者头像
王小婷
发布2023-10-23 09:57:23
3240
发布2023-10-23 09:57:23
举报
文章被收录于专栏:编程微刊

在JavaScript中,Hoisting(变量提升)是指在代码执行之前,JavaScript引擎将变量和函数的声明提升到当前作用域的顶部的行为。

具体来说,JavaScript引擎在执行代码之前会进行两个步骤:编译阶段和执行阶段。在编译阶段,JavaScript引擎会将变量声明和函数声明提升到当前作用域的顶部。这意味着可以在声明之前使用这些变量或函数,而不会引发错误。

变量提升的过程包括两种情况:

1:变量声明提升:JavaScript中使用var关键字声明的变量会被提升到其所在作用域的顶部。这意味着可以在变量声明之前使用变量,并且变量的值会是undefined。(只会声明,不会赋值。)

代码语言:javascript
复制
console.log(x); // 输出 undefined
var x = 10;

上述代码在执行时会被解释为以下形式:

代码语言:javascript
复制
var x;
console.log(x); // 输出 undefined
x = 10;

在这个例子中,变量 x 被提升到范围的顶部,但它的赋值 10 没有,所以当我们尝试记录 x 的值时,它返回 undefined。

2:函数声明提升:使用函数声明语法定义的函数会被整体提升到当前作用域的顶部,因此可以在函数声明之前调用这个函数。

代码语言:javascript
复制
sayHello(); // 输出 "Hello"
function sayHello() {
  console.log("Hello");
}

上述代码在执行时会被解释为以下形式:

代码语言:javascript
复制
function sayHello() {
  console.log("Hello");
}
sayHello(); // 输出 "Hello"

需要注意的是,只有函数声明会被提升,而函数表达式(使用var、let或const关键字定义的函数)不会被提升。

尽管变量和函数的声明会被提升,但是它们的赋值操作不会被提升。因此,在变量声明之前使用变量时,变量的值会是undefined

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-10-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档