一文读懂Javascript中var、let和const的区别,包括提升hoisting(文章非常简短易懂,适合小白)

 

一张表格整理var、let和const的区别

关键词

范围

提升

可以重新分配

可以重新声明

var

函数作用域

let

块作用域

const

块作用域

相信在上面的表格中,大家有疑问的应该是提升,那么下面就给大家来讲讲js中的提升

在JavaScript中,提到“提升”(hoisting)通常是指变量声明和函数声明的“提升”行为。简单的理解就是无论变量或函数在代码中的位置如何,都会在作用域的顶部被创建。

var变量提升

给大家举一个例子就明白什么是var的变量提升了

console.log(a) // undefinedvar a = 3;// 可以隐式的理解为var a;console.log(a);a = 3;

上面的代码中 a打印出undefined,而没有报错,这就是变量提升。

js代码编译阶段,var变量和function函数会被js引擎放入到变量环境中,并且var变量会被默认设置为undefined。需要注意的是,var变量只有创建和初始化被提升,赋值并没有被提升。

函数提升

function的创建、初始化和赋值均会被提升,所以函数可以在声明之前正常调用,代码如下:

a();
function a()
{    
console.log('执行代码')
}
// 输出 执行代码 
// 隐式等于
function a()
{   console.log('执行代码')
}
a();

我的每一篇文章都希望帮助读者解决实际工作中遇到的问题!如果文章帮到了您,劳烦点赞、收藏、转发!您的鼓励是我不断更新文章最大的动力!

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

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

相关文章

Excel VBA技术:编织数据之梦的魔法语言

想要让你的Excel技能瞬间升级,成为数据处理与展示的顶尖高手吗?Excel VBA技术正是你不可错过的魔法武器!它能让你轻松驾驭复杂的数据任务,自动化处理繁琐操作,释放你的双手和大脑。通过VBA,你可以创建精美的…

媒体邀约采访的分类?

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 媒体邀约采访可以根据不同的标准进行分类。以下是一些常见的分类方式: 1. 按照邀约形式: - 电话邀约:通过电话与媒体联系,说明采访或报道…

吴恩达2022机器学习专项课程(一) 第二周课程实验:实践线性回归

目标 假设您是一家餐厅连锁店的首席执行官,并正在考虑在不同的城市开设新店。您希望将您的业务扩展到可能为您的餐厅带来更高利润的城市。该连锁店已经在各个城市设有餐厅,您已经获得了这些城市的利润和人口数据。您还拥有关于新餐厅候选城市的数据。对…

机器学习算法快速入门

文章目录 0.简介1.常用术语1) 模型2) 数据集3) 样本&特征4) 向量5) 矩阵6)假设函数&损失函数7)拟合&过拟合&欠拟合 2.线性回归3.梯度下降求极值4.Logistic回归算法(分类问题)5.KNN最邻近分类算法6.朴素贝叶斯分类算法7.决策树…

前端开发攻略---在页面上渲染大量元素,使用defer减少白屏等待时间,优化页面响应速度

1、优化前 2、优化后 3、优化思路 1、在元素数量不变的情况下,进行一步一步的渲染,先渲染一些重要的元素或者需要用户第一时间看到的元素。 2、使用Hooks封装优化函数 4、优化代码 拥有大量元素的组件(Item):文件位置&…

随着深度学习的兴起,浅层机器学习没有用武之地了吗?

深度学习的兴起确实在许多领域取得了显著的成功,尤其是那些涉及大量数据和复杂模式的识别任务,如图像识别、语音识别和自然语言处理等。然而,这并不意味着浅层机器学习(如支持向量机、决策树、朴素贝叶斯等)已经失去了…

thinkphp5关联预载入with指定字段属性查询

一、thinkphp5.0 如果要指定属性查询,可以使用: $list User::field(id,name)->with([profile>function($query){$query->field(email,phone);}])->select([1,2,3]); foreach($list as $user){// 获取用户关联的profile模型数据dump($user…

学习经验分享【32】本科/硕士开题报告、中期报告等写作经验分享

本科/硕士阶段首先就是要写开题报告,然后中期报告,这篇博文就是分享一下写报告的经验,避免被老师打回来。本人有丰富的写报告经验,有需要的朋友可添加文末联系方式与我联系。 一、本科开题报告的提纲 课题来源及研究的目的和意义…

16路HDMI+AV流媒体IPTV高清编码器JR-3216HD

产品简介: JR-3216HD 16路高清HDMIAV编码器是专业的高清音视频编码产品,该产品具有支持16路高清HDMI音视频采集功能,16路标清AV视频采集功能,16路3.5MM独立外接音频输入,编码输出双码流H.264格式,音频MP3/…

Oracle和PG数据库临时表的差异,PG数据库如何删除临时表

现实的开发过程中使用 PG 数据库删除临时表发现如下报错,提示表 xxx 不存在: 问题原因: 调用删除语句,但是临时表不存在了。 解决方案: PG下用下面的方式来删除临时表或不进行删除(会话级临时表会自动删除…

Qt for Android 开发环境

在搭建环境时开始感觉还挺顺利的,从 Qt 配置的环境里面看并没有什么问题,可真正编译程序的时候发现全是错误。 最开始的时候安装了 JDK21 最新版本,然后根据 JDK21 安装 ndk, build-tools, Platform-Tools 和 Gradle,但是不管这么…

探索AD域控的安全性:ADAudit Plus的角色

在当今数字化时代,企业对于信息安全的需求越来越迫切。作为企业基础设施中的核心组成部分之一,Active Directory(AD)域控制器的安全性显得尤为重要。为了满足企业对AD安全性管理的需求,ADAudit Plus作为一款强大的解决…

element-ui的按需引入报错解决:MoudleBuildFailed,完整引入和按需引入

官网: Element - The worlds most popular Vue UI framework 1.完整引入 (1)下载: npm i element-ui -S (2)引入: 在 main.js 中写入以下内容: import Vue from vue; impor…

[C++初阶]类和对象(一)

1.面向过程和面向对象的区分 我们之前都是用C语言写的代码,我们知道C语言是一个面向过程的语言,但是现在我们学的时C,我们都知道C是一种面向对象的语言,那么什么叫面向过程?什么叫面向对象呢? 这里我们来举个例子: 比如我们是开饭店的,客人点了一道菜&#xff0c…

RocketMQ 02 功能大纲介绍

RocketMQ 02 主流的MQ有很多,比如ActiveMQ、RabbitMQ、RocketMQ、Kafka、ZeroMQ等。 之前阿里巴巴也是使用ActiveMQ,随着业务发展,ActiveMQ IO 模块出现瓶颈,后来阿里巴巴 通过一系列优化但是还是不能很好的解决,之后…

怎么进入抖音企业号管理页面?抖音企业号后台管理入口

抖音企业号上线于2018年6月,截止2020年,开通抖音企业号的企业数超过500万。抖音企业号,是企业商户在抖音平台上的经营阵地,能够帮助企业面向抖音用户“打品牌,找客户,做推广,带销量”&#xff0…

流媒体服务器的应用场景

流媒体服务器的应用场景 流媒体常用协议 RTSP 不适合手机和浏览器端 RTMP 比较适合手机和浏览器端直播 HLS 延迟比较高,适合点播

【JAVA基础篇教学】第八篇:Java中List详解说明

博主打算从0-1讲解下java基础教学,今天教学第八篇:Java中List详解说明。 在 Java 编程中,List 接口是一个非常常用的集合接口,它代表了一个有序的集合,可以包含重复的元素。List 接口提供了一系列操作方法,…

ClickHouse--16--普通函数

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、日期函数1、时间或日期截取函数(返回非日期)2、时间或日期截取函数(返回日期)3、日期或时间日期生成函数 二、类…