JavaScript 中的Hoisting是什么?

news/2024/5/15 1:48:26/文章来源:https://blog.csdn.net/qq_36538012/article/details/133944193

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

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

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

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

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

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

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

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

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

sayHello(); // 输出 "Hello"
function sayHello()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_186022.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

超全整理,服务端性能测试-tomcat部署项目/查看日志(细致)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 tomcat部署单项目…

云表:为什么要使用低代码开发?低代码选择指南

随着信息技术的不断发展,我们进入了一个数字化的时代。在这个时代,IT技术已经成为推动全球信息化浪潮的重要力量。然而,随着应用程序开发技术的不断发展,开发效率并没有像摩尔定律一样快速提升,反而成为了瓶颈。因此&a…

重置手机网络虽然麻烦,但效果杠杠的!如何重置安卓手机的网络

在这篇文章中,我们将探讨你可能需要在Android设备上重置网络设置的原因,并将提供如何重置的分步说明。无论你是遇到连接问题,还是只是想重新开始网络设置,本指南都将引导你完成重置过程。 重置网络设置的原因 在Android设备上重置…

Qt消息对话框的使用

本文介绍Qt消息对话框的使用。 QMessageBox类是Qt编程中常用到的一个类,主要用来进行一些简单的消息提示,比如:问题对话框,信息对话框等,这些对话框都属于QMessageBox类的静态方法,使用起来比较简单&#…

PAM从入门到精通(十五)

接前一篇文章:PAM从入门到精通(十四) 本文参考: 《The Linux-PAM Application Developers Guide》 先再来重温一下PAM系统架构: 更加形象的形式: 六、整体流程示例 1. 官方文档中的例程及解析 从PAM从入…

单点登录是什么?

单点登录(Single Sign On, SSO)是指在同一帐号平台下的多个应用系统中,用户只需登录一次,即可访问所有相互信任的应用系统。 单点登录的本质就是在多个应用系统中共享登录状态。如果用户的登录状态是记录在 Session 中的&#xff…

鸿蒙应用开发之组件状态管理

一、概述 在应用中,界面通常都是动态的。如图1所示,在子目标列表中,当用户点击目标一,目标一会呈现展开状态,再次点击目标一,目标一呈现收起状态。界面会根据不同的状态展示不一样的效果。 图片 ArkUI作为…

00后都到适婚年龄啦!90后的还在低调什么?

当你的想法还停留在00后读书时代,其实大部分00后早已步入工作社会,还有不少人已经步入婚姻。广东金媒人婚恋,无论是广州、深圳、东莞、佛山举办活动的参与者中,00后的男生女生都占了不少。 广州深圳这样一二线城市的单身年轻人群&…

低调而无为而治,藏在超级应用背后的道家哲学

众所周知,Elon Musk 想将 Twitter 重新设计定位成一款“超级应用 - X”的野心已经不再是秘密。伴随着应用商店中 Twitter 标志性的蓝鸟 Logo 被 X 取代后,赛博世界充满了对这件事情各种角度的探讨与分析。 Musk 曾经无数次通过微信这一样本来推广他的“超…

eNSP-OSPF协议其他区域不与骨干区域相连解决方法1

OSPF多进程路由重分布 AR1 [ar1]int g0/0/0 [ar1-GigabitEthernet0/0/0]ip add 192.168.1.1 24 [ar1-GigabitEthernet0/0/0]quit [ar1]ospf [ar1-ospf-1]area 0 [ar1-ospf-1-area-0.0.0.0]net 192.168.1.0 0.0.0.255 [ar1-ospf-1-area-0.0.0.0]quit AR2 [ar2]int g0/0/0 [ar2…

Spring篇---第六篇

系列文章目录 文章目录 系列文章目录一、Spring 框架中的单例 Bean 是线程安全的么?二、Spring 是怎么解决循环依赖的?三、说说事务的隔离级别一、Spring 框架中的单例 Bean 是线程安全的么? Spring 框架并没有对单例 Bean 进行任何多线程的封装处理。 关于单例 Bean 的线程…

hive一行多列合并为一行一列

SELECT named_struct(name, John, age, 30, city, New York) AS person;

virtualbox 下载安装

virtualbox 下载安装 下载 virtualbox 官网下载 virtualbox virtualbox 官网地址:https://www.virtualbox.org/ 1. 进入官网 2. 点击左侧 Downloads 下载 3. 点击右侧 Windows hosts 开始下载 安装 virtualbox 虚拟机软件 选择 虚拟机软件 virtualbox 安装包 右键…

win32汇编-使用子程序

当程序中相同功能的一段代码用得比较频繁时,可以将它分离出来写成一个子程序,在主程序中用call指令来调用它。这样可以不用重复写相同的代码, 仅仅用call指令就可以完成多次同样的工作了。Win 32汇编中的子程序也采用堆栈来传递参数&#xff…

探索未来的视觉革命:卷积神经网络的崭新时代(一)

💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢…

【VSCode】设置自动保存

首先打开设置 然后在搜索栏上搜索auto save,此时可以看见,默认off不保存 files:autoSaveDelay 设置自动保存的间隔 1.AfterDelay 将在配置的 “#files:autoSaveDelay#” 后自动保存。 2.onFocusChange 当编辑器失去焦点时,将自动保存。也就…

AI驱动的未来:探索人工智能的无限潜力 | 开源专题 No.39

这一系列开源项目代表着多个领域的最新技术成果,包括深度学习、自然语言处理、计算机视觉和分布式训练。它们共同的特点是致力于教育、资源分享、开源精神、多领域应用以及性能和效率的追求,为广大开发者、研究者和学生提供了宝贵的工具和知识&#xff0…

C++:模板初阶

本篇文章主要对模板有个简单的认识,方便我们后面对模板进行更加深入的学习。 目录 1.泛型编程 2.函数模板 2.1 函数模板的概念 2.2 函数模板格式 2.3 函数模板的原理 2.4 函数模板的实例化 2.5 模板参数的匹配原则 3.类模板 3.1 类模板的格式定义 3.2 类模…

一剑破万法:noexcept与C++异常导致的coredump

作为C/C程序员,最不想见到的就是coredump。导致coredump的原因有很多,今天我来谈一下其中一种十分常见的原因,那就是由于C异常没有被catch导致的coredump。 从一篇知乎文章讲起 先看一位知友的文章: C11 std::thread异常coredu…

Element UI 密码输入框--可切换显示隐藏,自定义图标

<el-form-item prop"password"><el-inputkeyup.enter.native"login"placeholder"密码"v-model"formData.password":type"showPassword ? text : password"><i slot"suffix" click"switchPas…