什么是变量提升

文章目录

  • 发现宝藏
  • 变量提升的定义
  • 变量提升的类型
  • 变量提升的示例
  • 函数声明提升的示例
  • 注意事项

发现宝藏

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【宝藏入口】。

变量提升(Hoisting)是 JavaScript 中一个重要的概念,它涉及到变量和函数的声明在代码执行过程中的处理方式。以下是对变量提升的详细解释:

变量提升的定义

变量提升是指在 JavaScript 代码执行前,变量和函数的声明会被移动到它们所在作用域的顶部。需要注意的是,只有声明本身会被提升,而赋值或其他运行逻辑则会留在原地。

变量提升的类型

  1. 变量声明提升
    • 使用 var 关键字声明的变量会在代码执行前被提升到其作用域的顶部,但不会赋值,默认值为 undefined
    • letconst 声明的变量不存在变量提升,它们在声明之前不可访问,这被称为暂时性死区。
  2. 函数声明提升
    • 使用 function 关键字声明的函数,其声明和定义都会被提升到作用域的顶部,可以在声明之前被调用。
    • 函数表达式(如 var fn = function() {...};)的声明不会被提升,只有变量声明会被提升。

变量提升的示例

考虑以下代码:

console.log(a); // 输出:undefined
var a = 2;

在这个例子中,虽然 var a = 2;console.log(a); 之后,但是由于变量提升,a 的声明实际上被提升到了作用域的顶部。因此,上述代码的实际执行顺序如下:

var a;       // 声明被提升
console.log(a); // 输出:undefined
a = 2;       // 赋值留在原地

函数声明提升的示例

zxx(); // 输出:'zxx is a great girl'
function zxx() {console.log('zxx is a great girl');
}

在这个例子中,function zxx() {...} 的声明和定义都被提升到了作用域的顶部,所以可以在声明之前调用 zxx()

注意事项

  • 变量提升只发生在同一个作用域内,不同作用域的变量不会相互影响。
  • 函数声明提升的优先级高于变量声明提升。

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

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

相关文章

住宅IP解析:动态住宅IP和静态住宅IP区别详解

在互联网连接的世界中,IP地址是我们识别和访问网络资源的关键。住宅IP地址,特别是动态住宅IP和静态住宅IP,是两种不同类型的IP分配方式,它们在使用和功能上存在显著差异。 1. IP地址的稳定性 动态住宅IP:这种IP地址是…

mysql命令练习

创建数据表grade: CREATE TABLE grade( id INT NOT NULL, sex CHAR(1), firstname VARCHAR(20) NOT NULL, lastname VARCHAR(20) NOT NULL, english FLOAT, math FLOAT, chinese FLOAT ); 向数据表grade中插…

[职场] MARKETINGSPECIALIST是什么 #笔记#微信#知识分享

MARKETINGSPECIALIST是什么 MARKETINGSPECIALIST,即市场营销专员,他们需要具备一定的专业知识和技能,以适应快速变化的市场环境。接下来,我们将详细探讨这个职位的工作内容、必备技能以及发展前景。 一、MARKETINGSPECIALIST是什么…

lua 游戏架构 之 LoaderWallet 异步加载

定义了一个名为LoaderWallet class,用于管理资源加载器(Loader)。这个类封装了资源加载的功能,包括异步加载,以及资源的释放和状态查询。下面是对代码的详细解释: ### 类定义和初始化 这里定义了一个名为…

WebPack5.0 快速入门

前端工程化WebPack5️⃣ 前置知识: 此文章属于前端——框架进阶篇,需要实现掌握:HTMLCSSJS三件套、Node... 😀推荐分享一波个人Blog文档: JavaScript、前端工程\模块化、邂逅Node.JS的那一夜 什么是WebPack❓ Web…

QT CNA上位机报错 解决方案

QT编译报错: -lControlCAN 解决方案 更换三个文件,即可解决(QT 自带的是32位库,应使用64位库文件)

windows下使用#include <nlohmann/json.hpp>

1.下载并解压:首先,需要从nlohmann/json的GitHub仓库下载源代码,并解压得到的文件。 地址: nlohmann/json: JSON for Modern C (github.com) https://github.com/nlohmann/json/tree/develop 2.拷贝头文件:解压后&a…

Kafka Producer之数据重复和乱序问题

文章目录 1. 数据重复2. 数据乱序 为了可靠性,Kafka有消息重试机制,但是同时也带来了2大问题 1. 数据重复 消息发送到broker后,broker记录消息数据到log中,但是由于网络问题,producer没有收到acks,于是再次…

【机器学习实战】Datawhale夏令营2:深度学习回顾

#DataWhale夏令营 #ai夏令营 文章目录 1. 深度学习的定义1.1 深度学习&图神经网络1.2 机器学习和深度学习的关系 2. 深度学习的训练流程2.1 数学基础2.1.1 梯度下降法基本原理数学表达步骤学习率 α梯度下降的变体 2.1.2 神经网络与矩阵网络结构表示前向传播激活函数…

mysql如何排查死锁问题

MySQL默认的处理方式是自动检测到死锁后,其中一个事务会被选择为"牺牲者"并回滚,以解除死锁。被选择的事务会收到一个Deadlock Detected异常,然后回滚该事务,释放相关的资源,允许其他事务继续执行。 MySQL使…

Three.js 实战【2】—— 船模型海上场景渲染

停止了好久没有更新three这方面的文章了,从上两年还是vue2,一下子都换到vue3了,下面这些three都是基于vue3来进行开发的哈,先看一下这篇文章实现的效果哈。其中关于模型什么的资源都放在Git上了 初始化场景 安装three就直接通过n…

springboot系列十: 自定义转换器,处理JSON,内容协商

文章目录 自定义转换器基本介绍应用实例查看源码注意事项和细节 处理JSON需求说明应用实例 内容协商基本介绍应用实例debug源码优先返回xml注意事项和细节 ⬅️ 上一篇: springboot系列九: 接收参数相关注解 🎉 欢迎来到 springboot系列十: 自定义转换器&#xff0c…

ssh远程登录另一台linux电脑

大部分的博客内容所说的安装好ssh服务后,terminal输入 ssh -p port_number clientnameserver_ip 之后输入密码等等就可以登上别人的电脑 但是这是有一个前提的,就是这两台电脑要在同一个局域网下面。 如果很远呢? 远到不在同一个网下面怎么办…

1.JavaWeb开发简介(Tomcat安装使用+Servlet简介)

文章目录 一.web开发简介1.概念:2.特点:3.常用技术:4.服务架构5.web应用开发模式6.HTTP协议1)概念:2)HTTP最基本的过程是:3)IP/域名4)HTTP协议请求方式 7.JavaWeb的相关技术8.Java Web服务器 二、安装配置Tomcat1.简介2.Tomcat目录结构 三.Servlet的入门应用1.使用步骤2.使用注…

算法刷题笔记 字符串哈希(C++实现)

文章目录 题目描述基本思路实现代码 题目描述 给定一个长度为n的字符串,再给定m个询问,每个询问包含四个整数l1,r1,l2,r2,请你判断[l1,r1]和[l2,r2]这两个区间所包含的字符串子串是否完全相同。字符串中只包含大小写英文字母和数字。 输入格…

ABAP使用SQL直接更新数据库与使用IN UPDATE TASK的区别

1. 背景 刚接触ABAP的小伙伴常常会有这样的疑问,为什么不直接使用Open SQL直接更新数据库,而要把对DB的操作封装到IN UPDATE TASK中呢? 对于这个问题,比较常见的解释是,IN UPDATE TASK的方式会保证数据更新的一致性。…

接口开发:Orcal数据库的批量修改sql

场景:在日常的CURD中一定会用到批量修改。在我们的项目中,使用的数据库是Orcal,由于之前基本都是使用Mysql的,使用的sql语句也基本都是用mysql的。但是在这次的接口编写时用mysql的批量修改出了问题,刚开始我还以为是写…

如何每天不用动手就可以自动加人

只需要设置一次,批量导入客户号码或是微信号并设置好添加规则,系统就会自动进行添加。

Elastic 线下 Meetup 将于 2024 年 7 月 27 号在深圳举办

2024 Elastic Meetup 深圳站活动,由 Elastic、腾讯、新智锦绣联合举办,现诚邀广大技术爱好者及开发者参加。 时间地点 2024年 7 月 27 日 13:30-18:00 活动地点 中国深圳 南山区海天二路 33 号腾讯滨海大厦 北塔 3 楼多功能厅 ​ 活动流程 14:00-15…

C++ 在Linux环境中生成coredump文件及其调试

第一步:命令行执行 ulimit -c unlimited,然后用ulimit -c 检查是否设置成功,显示unlimited为成功 第二步: 打开/etc/sysctl.conf, 文件末尾添加, 注意确保 /var/core_log 目录存在,也可用别的目录 kern…