和push的区别_还没有理解let 和 const的用法和区别吗,几百字让你立马搞懂

db7f01f13ff1854272df804f77233f2d.png

本文主要讲解ES6中变量的相关操作,变量的命名, 讲解 var、 let 、 const 三者的区别

正文

ES6中的 let 和 const 都是用来声明变量的, 他们与 var 有所区别

let 命令

我们都知道在for循环中,我们命名的变量 i 一般都只是为了在这个循环中使用,才临时命名的, 我们希望循环结束后,这个变量就消失, 但是却相反,用 var 命名的变量,在 for 循环结束后并不会销毁,而会存在于全局中。

for(var i=0; i<5; i++) {console.log('循环'+ i)
}
console.log(i)
/* 输出结果  */
循环1
循环2
循环3
循环4
5           // 这里是循环外输出的i 

但是如果我们在 for 循环中,用到 let 去命名变量会怎么样呢?

for(let i=0; i<5; i++) {console.log('循环'+ i)
}
console.log(i)
/* 输出结果  */
循环1
循环2
循环3
循环4
undefined           // 这里是循环外输出的i,显示未定义

这样的话就解决了因为 var 命名导致的变量泄露的问题了, 其实它的本质就是作用域, let 只作用于他自身所在的代码块内,而 var 是针对全局都有效的。例如这一个简单的例子:

{let i = 1var n = 2
}
console.log(i)
console.log(n)
/* 输出结果 */
undefined
2

可以看到, let 命名的变量只存在于那个代码块内,到外部就访问不到了,而 var 就是针对全局命名的。

const 命令

const 和 let 类似,也是命名的变量只能在它所在的代码块内能被访问得到,到外部就无法被访问到,但是 const 与 let 的区别就在于, const 命名的变量是一个只读变量,简而言之就是命名了就无法在后面被修改,例如这个例子:

const a = 'apple'
let b = 'orange'a = 'watermelon'
b = 'banana'
/* 输出结果 */
a = 'watermelon'^

显而易见, 系统会直接报错, 因为 const 命名的变量 a 是无法改变的, 后续无法对其进行赋值。

其实 const 命名变量以后, 也不是说就真的无法改变了, 因为const命名时其实是把箭头指向了内存中的一个对象, 只要不改变这个对象地址, const 命名的变量还是可以变化的,例如:

const list1 = []list1.push('变化1')console.log(list1)//  ['变化1']

可以看到 list1.pish(' 变化1 ') 不会改变 变量 list1在内存中的地址。

但是 list1 = [ '变化1' ] 就会改变 list1 在内存中的地址,所以会报错

const list1 = []list1 = ['变化1']console.log(list1)//  报错:list1 = ['变化1']^

结束语

这就是 let 和 const 的简单应用,希望这篇文章对大家能有所帮助,我是Lpyexplore,一个因python爬虫而转入前端的程序员,关注我,带你爬虫过程中学习Web。公众号:Lpyexplore的编程小屋

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

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

相关文章

三种平摊分析的方法分别为_干货|电工必须学会的三极管电路分析方法

三极管有静态和动态两种工作状态。未加信号时三极管的直流工作状态称为静态&#xff0c;此时各极电流称为静态电流&#xff0c;给三极管加入交流信号之后的工作电流称为动态工作电流&#xff0c;这时三极管是交流工作状态&#xff0c;即动态。一个完整的三极管电路分析有四步&a…

休眠后gpio状态_浅谈Digi XBee模块的休眠模式

浅谈Digi XBee模块的休眠模式2020-3-25Digi XBee S2C模块&#xff0c;如果仅连接电源线可以测得&#xff0c;在待机情况下&#xff0c;大约是10.5mA左右的电流&#xff0c;在休眠时的功耗可以低到0.5uA。可以知道&#xff0c;休眠几乎不耗电。在Spec上标的待机功耗会比实测只接…

xodo上的笔记不见了_一起来“终极笔记名场面批发市场”进货吗

俗话说得好&#xff0c;谁都逃不过“真香定律”&#xff0c;三天不见小笔记&#xff0c;想他。不对&#xff0c;不应该叫小笔记&#xff0c;应该叫粉丝起的名字——“【瓶邪黑花】《终极笔记》(原著风/连载)”下面请接受来自粉丝的疯狂打call~自上周《终极笔记》播出&#xff0…

python3学习笔记 雨痕_Python 3 学习笔记:数字和布尔

数字基本类型整数在 Python 编程中&#xff0c;整数就是数学意义上的整数&#xff0c;包括正整数、负整数和零&#xff0c;且它的位数是任意的。根据表示方法的不同&#xff0c;可以分为&#xff1a;二进制整数八进制整数十进制整数十六进制整数浮点数浮点数&#xff0c;即数学…

不越狱换壁纸_那些不舍得换的手机插画壁纸,你还差几张?

酷爱收藏美作的微课菌可以大展拳脚了&#xff01;分享3位自己收藏的画师作品&#xff0c;绝对每一张都让你舍不得换&#xff0c;手机可以扔&#xff0c;壁纸得先拷贝存起来&#xff01;开始吧&#xff01;&#xff01;多图预警&#xff01;NO.1&#xff1a;Atey Ghailan&#x…

程序员绩效总结_年终总结怎么写?

每年这时候&#xff0c;都有必要写一下一年的个人工作总结。年终总结或工作总结是个挺重要的事。写好的话&#xff0c;有助于说明自己的工作绩效&#xff0c;绩效好可以多拿年终奖&#xff0c;还有机会争取晋升。另外&#xff0c;一年下来的个人生活也需要总结&#xff0c;这一…

线程停止继续_线程不是你想中断就能中断

这是我2021年的第2篇原创文章&#xff0c;原汁原味的技术之路尽在Jerrycodes为什么不强制停止如何用 interrupt 停止线程sleep 期间能否感受到中断停止线程的方式有几种总结启动线程需要调用 Thread 类的 start() 方法&#xff0c;并在 run() 方法中定义需要执行的任务。启动一…

倒序查10条数据_10 | 怎么给字符串字段加索引?

现在&#xff0c;几乎所有的系统都支持邮箱登录&#xff0c;如何在邮箱这样的字段上建立合理的索引&#xff0c;是我们今天要讨论的问题。假设&#xff0c;你现在维护一个支持邮箱登录的系统&#xff0c;用户表是这么定义的&#xff1a;mysql> create table SUser( ID bigin…

保留小数点后三位_【Meta分析】Stata制作森林图时,如何保留三位小数?

系统评价/Meta分析指全面收集所有相关研究并逐个进行严格评价和分析&#xff0c;再用定性或定量合成的方法对资料进行处理得出综合结论的研究方法。在指导学员的过程中发现初学者在学习过程中常常会碰到许多共性问题&#xff0c;本公众号特此开设专栏解答&#xff0c;希望能够和…

Redis小计(2)

目录 1.exists命令 2.del命令 3.expire/pexpire命令 4.ttl命令 5.redis对于key过期的删除策略 1.exists命令 exists X1 X2 X3 X4&#xff1a;返回四个key存在的个数。 2.del命令 del X1 X2&#xff1a;删除key。 3.expire/pexpire命令 给key设置超时时间。 expire key…

一秒执行一次_《一秒钟》:一贯的粗旷式抓大放小,张艺谋的自命题作业总是要观众自己再做一遍...

还有不变的永远在奔跑的大棉裤花棉袄的圆脸妮子&#xff0c;这是导演张艺谋最新作品《一秒钟》的最直接观感。张艺谋是个善于从普世情怀处挖掘题材的导演。之前诸多现实题材类型作品&#xff0c;诸如讲父子和解的《千里走单骑》、夫妻爱情的《归来》以及《我的父亲母亲》&#…

unity 畸变_unity3d 几种镜头畸变

1.Fisheye distortion 鱼眼镜头解释来自百度百科&#xff1a;鱼眼镜头是一种焦距为16mm或更短的并且视角接近或等于180。 它是一种极端的广角镜头&#xff0c;“鱼眼镜头”是它的俗称。为使镜头达到最大的摄影视角&#xff0c;这种摄影镜头的前镜片直径很短且呈抛物状向镜头前…

mysql 5.5.18下载_MySQL5.7.18下载和安装过程图文详解

MySql下载1、打开官网找到下载路口&#xff0c;这里直接给出下载的地址2、选择64位版本3、直接下载MySql5.7.18.1安装过程1 、运行安装软件&#xff0c;接受协议2、选择默认安装3、下一步到检查环境界面&#xff0c;点击“Execute”执行检查 (可以后面单独下载插件安装)&…

mysql数据库sql注入原理_SQL注入原理解析以及举例1

sql注入是指web应用程序对用户输入数据的合法性没有判断&#xff0c;导致攻击者可以构造不同的sql语句来实现对数据库的操作。sql注入漏洞产生满足条件&#xff1a;1&#xff1b;用户能够控制数据的输入。2&#xff1b;原本需要执行的代码&#xff0c;拼接了用户的输入。举例&a…

mysql存储map数据结构_map数据结构

Go map实现原理 - 恋恋美食的个人空间 - OSCHINA - 中文开源技术交流社区 https://my.oschina.net/renhc/blog/2208417// A header for a Go map.type hmap struct {// Note: the format of the hmap is also encoded in cmd/compile/internal/gc/reflect.go.// Make sure this…

四因素三水平正交表_做论文要用正交表?我打包送给你

正交试验目前在国内的应用量仍然是比较高的&#xff0c;许多高校毕业生喜欢利用正交试验来获取研究数据&#xff0c;最终完成毕业论文的撰写或者期刊投稿。正交试验方案的设计&#xff0c;必然要用到(标准)正交表。那么大家都是从哪里获取正交表的呢&#xff1f;小兵给这方面的…

plsql视图添加表字段_Oracle-单表多字段查询(不使用*)

环境&#xff1a;Oracle 11g&#xff0c;plsql 14目的&#xff1a;不使用*,查询拥有上百个字段的表的所有字段。懒人大法&#xff1a;在文章末尾。sql实现逻辑&#xff1a;1、首先建一张100个字段以上的表&#xff0c;通过excel的方式将表建好后直接复制粘贴到plsql的建表界面。…

lableimg闪退_CV学习笔记(二十五):数据集标注与制作

最近在做一些数据标注的工作&#xff0c;虽然标注数据比较枯燥&#xff0c;但这也是每个做算法的工程师升级打怪的必由之路。使用一些合适的工具往往可以事半功倍&#xff0c;效率UP。一&#xff1a;数据标注流程二&#xff1a;数据处理的一些小代码1&#xff1a;重命名当得到这…

java线程堆栈_深入JVM剖析Java的线程堆栈

在这篇文章里我将教会你如何分析JVM的线程堆栈以及如何从堆栈信息中找出问题的根因。在我看来线程堆栈分析技术是Java EE产品支持工程师所必须掌握的一门技术。在线程堆栈中存储的信息&#xff0c;通常远超出你的想象&#xff0c;我们可以在工作中善加利用这些信息。我的目标是…

java文件 linux_Linux执行Java文件

最近学习shell脚本&#xff0c;写个简单java类让linux去执行java类没别的东西&#xff0c;就引了一个fastjson的jar&#xff0c;写了个main方法 序列化一个User对象 打印package com.lws.demo;import java.util.Date;import com.alibaba.fastjson.JSONObject;import com.lws.mo…