当前位置: 首页 > news >正文

JavaScript 中 let 和 var 的区别

JavaScript 中 let 和 var 的区别

在 JavaScript 中,letvar 都是用来声明变量的关键字,但它们在作用域、提升(hoisting)和重新赋值方面存在显著差异。理解这些差异对于编写高效和无bug的JavaScript代码至关重要。

作用域

var

var 关键字声明的变量拥有函数作用域。这意味着,当 var 用于函数内部时,它只能在这个函数内部被访问。如果在函数外部使用 var,那么它将成为全局变量。

function example() {var localVar = 1;
}
console.log(localVar); // ReferenceError: localVar is not defined

let

let 关键字声明的变量拥有块作用域。块作用域是任何代码块(如 {} 内部)内的区域,例如循环和条件语句。这意味着 let 声明的变量只在它所在的代码块内有效。

if (true) {let blockScopeVar = 1;
}
console.log(blockScopeVar); // ReferenceError: blockScopeVar is not defined

提升(Hoisting)

var

var 声明的变量会被提升到其所在作用域的顶部,但只提升声明,不提升初始化。这意味着变量可以在声明之前被引用,但其值将是 undefined

console.loggetVar); // undefined
var getVar = 1;

let

let 声明的变量也会被提升,但与 var 不同,在初始化之前访问 let 变量会导致引用错误。这被称为“暂时性死区”(temporal dead zone)。

console.log(letVar); // ReferenceError: Cannot access 'letVar' before initialization
let letVar = 1;

重新赋值

var

使用 var 关键字声明的变量可以被重新赋值。

var reassignVar = 1;
reassignVar = 2;

let

使用 let 关键字声明的变量也可以被重新赋值。

let reassignLet = 1;
reassignLet = 2;

总结

  • let 用于块作用域,而 var 用于函数作用域。
  • var 声明的变量会被提升,但 let 声明的变量在初始化之前不能被访问。
  • 两者都可以重新赋值。
    在现代 JavaScript 开发中,推荐使用 let(和 const,用于声明不变的变量)而不是 var,因为 letconst 提供了更清晰的作用域管理和减少了错误的可能性。

相关文章:

JavaScript 中 let 和 var 的区别

JavaScript 中 let 和 var 的区别 在 JavaScript 中,let 和 var 都是用来声明变量的关键字,但它们在作用域、提升(hoisting)和重新赋值方面存在显著差异。理解这些差异对于编写高效和无bug的JavaScript代码至关重要。 作用域 v…...

React第十一章(useReducer)

useReducer useReducer是React提供的一个高级Hook,没有它我们也可以正常开发,但是useReducer可以使我们的代码具有更好的可读性,可维护性。 useReducer 跟 useState 一样的都是帮我们管理组件的状态的,但是呢与useState不同的是 useReducer…...

VUE3实现古典音乐网站源码模板

文章目录 1.设计来源1.1 网站首页页面1.2 古典音乐页面1.3 著名人物页面1.4 古典乐器页面1.5 历史起源页面1.6 登录页面1.7 注册页面 2.效果和源码2.1 动态效果2.2 目录结构 源码下载万套模板,程序开发,在线开发,在线沟通 作者:xc…...

1.nginx安装【Docker】

一、 拉取 最新 nginx 镜像 docker pull nginx二、 拷贝配置文件 2.1 目的 【数据持久化】容器被删除时,它内部的所有数据也会丢失。通过将数据目录挂载到宿主机,可以确保重要数据得到持久化保存 【方便数据管理和调试】通过卷挂载,可以直接…...

Linux -- 共享内存(1)

目录 共享内存 共享内存相关函数 ftok 函数 -- 获取 key 值 什么是 key? 如何生成 key ? 参数: 返回值: 封装: shmget 函数 -- 获取 shmid 值 什么是 shmid? shmid 和 key 的区别? …...

冒泡排序和二分查找--go

冒泡排序的逻辑 二分查找的逻辑 func bubbleSort(arr *[5]int){//冒泡排序fmt.Println(*arr)temp : 0for j : len(*arr); j > 0; j-- {for i : 0; i < j-1; i {temp (*arr)[i]if((*arr)[i] > (*arr)[i1]){(*arr)[i] (*arr)[i1](*arr)[i1] temp}}} }func binaryF…...

springboot RedisTemplate支持多个序列化方式

前提纪要&#xff1a;因为业务变动&#xff0c;需要在原先只支持protobuf的前提序列化的前提下&#xff0c;新增正常的序列化读取数据所以在原先的基础上进行优化。文章用于记忆。 话不多说直接上代码 Configuration AutoConfigureAfter(RedisAutoConfiguration.class) Import…...

开源项目-拍卖管理系统

哈喽&#xff0c;大家好&#xff0c;今天主要给大家带来一个开源项目-拍卖管理系统 拍卖管理系统主要有拍卖品管理&#xff0c;我的拍卖&#xff0c;拍卖详情&#xff0c;拍卖品信息修改&#xff0c;发布拍卖品等功能 登录 拍卖商品管理 主要用于查看、竞拍拍卖商品的信息 我…...

Python小游戏14——雷霆战机

首先&#xff0c;你需要确保安装了Pygame库。如果你还没有安装&#xff0c;可以使用pip来安装&#xff1a; bash pip install pygame 代码如下&#xff1a; python import pygame import sys import random # 初始化Pygame pygame.init() # 设置屏幕大小 screen_width 800 scr…...

81页PPT | 企业数字化底座与数字化转型方案

方案内容涵盖了企业数字化转型的议程、集团管理分析类应用建设的现状与问题、数字化建设的目标、预期收益、总体架构、数据产生层、数据交换层、数据存储层、数据应用层、数据管控层等多个方面。方案详细描述了数据从产生、交换、存储到应用的全过程&#xff0c;以及如何通过数…...

R语言笔记(五):Apply函数

文章目录 一、Apply Family二、apply(): rows or columns of a matrix or data frame三、Applying a custom function四、Applying a custom function "on-the-fly"五、Applying a function that takes extra arguments六、Whats the return argument?七、Optimized…...

Newsqueak:在 Go 之前的一门语言

写在前面 学习一个东西的一种很好的方法&#xff0c;就是去了解这个东西的历史。在我们学习 Go 的过程中&#xff0c;同样也可以去了解下在 Go 之前的一些事情。 内容 Rob Pike 是 Go 语言的作者之一&#xff0c;早年他在贝尔实验室工作&#xff0c;也是 Unix 团队的成员。 …...

世界酒中国菜与另可数字平台达成战略合作

世界酒中国菜与另可数字平台达成战略合作&#xff0c;共推行业发展新高度 近日&#xff0c;在行业内引起广泛关注的“世界酒中国菜”项目&#xff0c;与“另可”数字平台成功举行了战略合作签约仪式。这一重要合作不仅是双方发展历程中的重要里程碑&#xff0c;更是继世界酒中…...

ElasticSearch基础篇——概念讲解,部署搭建,使用RestClient操作索引库和文档数据

目录 一、概念介绍 二、Elasticsearch的Docker容器安装 2.1拉取elasticsearch的镜像文件 2.2运行docker命令启动容器 2.3通过访问端口地址查看部署情况 三、安装Kibana容器 3.1拉取Kibana镜像容器指令&#xff08;默认拉取最新版本&#xff09;&#xff1a; 3.2拉取完…...

k8s 二进制部署安装(一)

目录 环境准备 初始化操作系统 部署docker 引擎 部署 etcd 集群 准备签发证书环境 部署 Master01 服务器相关组件 apiserver scheduler controller-manager.sh admin etcd 存储了 Kubernetes 集群的所有配置数据和状态信息&#xff0c;包括资源对象、集群配置、元数据…...

115页PPT华为管理变革:制度创新与文化塑造的核心实践

集成供应链&#xff08;ISC&#xff09;体系 集成供应链&#xff08;ISC&#xff09;体系是英文Integrated Supply Chain的缩写&#xff0c;是一种先进的管理思想&#xff0c;它指的是由相互间提供原材料、零部件、产品和服务的供应商、合作商、制造商、分销商、零售商、顾客等…...

ubuntu限制网速方法

sudo apt-get install trickle sudo trickle -d <下载速度> -u <上传速度> <命令>例如git clone sudo trickle -d 1024 git clone http://xxxxxxxxxx.git如果想简化指令可以在bashrc中添加如下指令 alias gitttrickle -u 1024 gitgitt为自定义 使用方法&am…...

三品PLM研发管理系统:企业产品研发过程的得力助手

三品PLM系统&#xff1a;全方位赋能企业产品生命周期管理的优选方案 在当今竞争激烈的市场环境中&#xff0c;产品生命周期管理PLM系统已成为企业实现高效、灵活和创新产品开发的关键工具。PLM系统集成了信息技术、先进管理思想与企业业务流程&#xff0c;旨在帮助企业优化产品…...

PyCharm 添加不了 Anaconda 环境

经常会遇到 PyCharm 无法添加新创建的 Anaconda 环境&#xff0c; Setting --> Python Interpreter --> Add Python Interperter --> Conda Environment 中为空&#xff0c;即使打开右侧文件夹路径按钮&#xff0c;选择新创建的 conda 环境&#xff0c;也无法找到 pyt…...

Leetcode 二叉树的右视图

好的&#xff0c;我来用中文详细解释这段代码的算法思想。 问题描述 题目要求给定一个二叉树的根节点&#xff0c;从树的右侧看过去&#xff0c;按从上到下的顺序返回看到的节点值。即&#xff0c;我们需要找到每一层的最右侧节点并将其加入结果中。 算法思想 这道题可以通…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写&#xff0c;中文译为后进先出。这是一种数据结构的工作原则&#xff0c;类似于一摞盘子或一叠书本&#xff1a; 最后放进去的元素最先出来 -想象往筒状容器里放盘子&#xff1a; &#xff08;1&#xff09;你放进的最后一个盘子&#xff08…...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比

在机器学习的回归分析中&#xff0c;损失函数的选择对模型性能具有决定性影响。均方误差&#xff08;MSE&#xff09;作为经典的损失函数&#xff0c;在处理干净数据时表现优异&#xff0c;但在面对包含异常值的噪声数据时&#xff0c;其对大误差的二次惩罚机制往往导致模型参数…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件&#xff0c;我的文件路径是/etc/mysql/my.cnf&#xff0c;有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别

【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而&#xff0c;传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案&#xff0c;能够实现大范围覆盖并远程采集数据。尽管具备这些优势&#xf…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)

题目 做法 启动靶机&#xff0c;点进去 点进去 查看URL&#xff0c;有 ?fileflag.php说明存在文件包含&#xff0c;原理是php://filter 协议 当它与包含函数结合时&#xff0c;php://filter流会被当作php文件执行。 用php://filter加编码&#xff0c;能让PHP把文件内容…...

(一)单例模式

一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing

Muffin 论文 现有方法 CRADLE 和 LEMON&#xff0c;依赖模型推理阶段输出进行差分测试&#xff0c;但在训练阶段是不可行的&#xff0c;因为训练阶段直到最后才有固定输出&#xff0c;中间过程是不断变化的。API 库覆盖低&#xff0c;因为各个 API 都是在各种具体场景下使用。…...

游戏开发中常见的战斗数值英文缩写对照表

游戏开发中常见的战斗数值英文缩写对照表 基础属性&#xff08;Basic Attributes&#xff09; 缩写英文全称中文释义常见使用场景HPHit Points / Health Points生命值角色生存状态MPMana Points / Magic Points魔法值技能释放资源SPStamina Points体力值动作消耗资源APAction…...