const 常量_var,let,const 的区别?

为了更好的了解var let const 的区别,我们就来简单的了解它们的过程

相信有很多人都会面临面试官问的这个问题

很多的同学都是简单的认为 var声明的变量会提升,而let const 不会,虽然可以这样认为,但不完全对,

经过几经波折,得出一个自己看得懂的结论

这次,我们就来看看它们三者的区别以及过程让我们可以更好的了解它们

在JS引擎解析代码的时候,遇到变量经历不同的声明方式的过程是不同的

1.通过var声明的变量过程

consloe

​过程如下:

​ 1.var声明的变量会提升到最顶部,创建出a变量

​ 2.创建完a变量后会初始化为undefined

​ 3.开始执行代码

​ 4.将变量值赋值给a变量

为什么在var声明变量之前输出这个变量为undefined的原因就一目了然了

2.通过let声明变量的过程

let 

1.输出结果:无法在初始化之前访问 ' a ' 。

2.输出结果:标识符“a”已经声明

经过错误1.的提示,那么问题来了,let是会提升吗?

​ 过程如下:

​ 1.let声明的变量在创建过程中被提升

​ 2.开始执行代码,但未初始化 Temporary dead zone(也就是所谓的暂时性死区)

​ 3.初始化代码

​ 4.在修改变量值的前提下,进行赋值

这就是为什么输出的结果为:无法在初始化之前访问 ' a '

错误2.使用let声明变量无法声明重复变量,所以抛出错误

有些同学看到暂时性死区会很懵逼的说,那是啥玩意儿?如然后各种度娘,其实你可以简单的认为:在变量初始化之前,是无法使用这个变量的

3.通过const声明的常量

const 

输出的结果为:重新赋值了常量。也就是是你重新修改了const声明的常量的值

const 和 let只有一个区别,那就是 const 声明常量的过程只有两步:

创建和初始化,但没有赋值过程

因为没有赋值过程,所以无法给const声明的常量进行重新赋值,这就是为什么重新给常量赋值后会抛出错误的原因

const声明的常量是什么?常量,顾名思义就是常用的变量,在判断逻辑的情况下,我们有时候需要一个固定值来作为判断条件,那么我们就会优先使用const进行声明常量,而const声明的常量移除了这个量的修改功能,也就是说 const声明的量只无法修改其值,故称为常量。

4.const 和 let 具有块级作用域

{

由此可见,const 和 let 声明的常量/变量只限于当前作用域,在外部作用域是无法访问到的,那么另一个问题就来了,它们两者声明的常量/变量是否属于window呢?

let 

是否看完结果后,又发现了一项它们之间的区别,在全局作用域中使用var或者不使用var声明的变量都是属于window的,而let和const不是

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

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

相关文章

C语言按位取反原理

正数取反是先将初始数值转换成二进制数(6》00000110),再对二进制数的每一位取反:即将0变为1、将1变为0。(00000110》11111001),得到的是最终结果的补码,要转换为最终结果的原码则需再…

脚本自动定时打开链接_自动化构建系统

在软件开发过程中,特别是在一些大型多人合作开发的项目中,如何将各个人开发的不同模块集合为一个完整的系统,最终输出一个完整的目标文件,这个过程包括编译,发布,自动化测试等环节。这一过程的完善程度和流…

++ba--运算结果解析

int db&&a--; 此运算其实的操作为&#xff1a; db&&a,然后aa-1,所以d0&#xff0c;a-1. #include<stdio.h> void main() {/*double a97.3;double b98;double c;int c1;printf("%d\n",(int)(a/b));printf("%f",a/b);*/int a0,b2,…

python docker_Docker实践:python应用容器化

一、前言 容器使用沙箱机制&#xff0c;互相隔离&#xff0c;优势在于让各个部署在容器的里的应用互不影响&#xff0c;独立运行&#xff0c;提供更高的安全性。本文主要介绍python应用&#xff08;django&#xff09;跑在docker容器里&#xff0c;编写dockerfile实现镜像构建自…

Python与C++ 局部变量/全部变量作用域讨论

python分为def内和def外 C分为花括号内和花括号外

python删除对象引用_使用Python删除内存中的对象

我正在尝试使用这种方法删除python中的对象。我阅读了Python的文档&#xff0c;声明垃圾收集器将自动删除未引用的对象。def check(): class newOb(): def __init__(self,value): self.value value print self.value return None class ob: ins {} def cr(self,someuniqueid,…

mysql 默认事务隔离级别_上个厕所的功夫,搞懂MySQL事务隔离级别

“隔离级别” 出于MySQL四大特性(ACID)中的“I”&#xff0c;也就是隔离性。目的是实现数据、事务一致性“C”。MySQL在多线程并发场景下&#xff0c;可能会出现脏读(dirty read)、不可重复读(non-repeatable read)、幻读(phantom read)这类并发问题&#xff0c;为了解决这些问…

Tg5032smn:高稳定性105℃高温

TG5032SMN是一款频率范围10MHz ~ 54MHz,具有高稳定的TCXO晶振&#xff0c;可与CMOS或限幅正弦输出。外部尺寸5.0 3.2 1.45mm&#xff0c;超小型,质地轻。该系列晶振的额定工作范围-40℃~&#xfe62;105C内可高稳定性工作&#xff0c;使得信号频率的误差很小。TG5032SMN与其他…

泰坦尼克号数据集_机器学习入门—泰坦尼克号生存率预测

项目名称&#xff1a;泰坦尼克号生存率预测1.导入数据这里使用kaggle kernel编写代码数据下载地址为&#xff1a;https://www.kaggle.com/c/titanic2.数据统计分析通过describe和info方法&#xff0c;我们可以发现Age&#xff0c;Cabin&#xff0c;Embarked和Fare的数据都有不同…

Python 爬虫利器一之 Requests 库的用法

简介 Requests是用python语言基于urllib编写的&#xff0c;采用的是Apache2 Licensed开源协议的HTTP库&#xff0c;Requests它会比urllib更加方便&#xff0c;可以节约我们大量的工作。 一、安装 pip快速安装&#xff1a;pip install requests 二、使用 import requestsresp…

firefox flash插件_巧用firefox下载视频资源

技术应用场景&#xff1a;1. 免广告播放视频(含vip)2. 下载各大视频网站的视频资源步骤&#xff1a;1.提前下载安装以下程序&#xff1a;火狐浏览器(Firefox)https://www.lanzous.com/i98jfne火狐flash插件 https://www.lanzous.com/i98jercVideo DownloadHelper插件 https://w…

台式电脑-时间和日期无法更改,提示需要管理员授权

使用系统自带功能修改一直不成功&#xff0c;此时&#xff1a;使用进入bios后台的方式进行修改&#xff0c;即可完成。

sdr 软件_无线电爱好者系列-1.通过SDR获取周围无线电信号及应用

一、什么是SDR?SDR就是Software Defined Radio,即软件定义无线电。之前的无线电通信系统都是基于特殊的硬件元器件完成无线电信号的接收和解码&#xff0c;例如混频器、滤波器、放大器、调制器和解调器、检波器等。而SDR是基于计算机完成相同的工作&#xff0c;也就是把无线电…

程序语言功能

C语言 用来写操作系统 java 写B/S架构的内容 C 写游戏开发 C# windows应用程序 不流行&#xff1a;2014年起&#xff0c;手机销售量超过电脑销售量 Python 大数据 人工智能 算法处理 爬虫 数据分析 机器学习 达到千万级的并发量--使用分布式来减压

c python 内存冲突_Python在计算内存时应该注意的问题?

我之前的一篇文章&#xff0c;带大家揭晓了 Python 在给内置对象分配内存时的 5 个奇怪而有趣的小秘密。文中使用了sys.getsizeof()来计算内存&#xff0c;但是用这个方法计算时&#xff0c;可能会出现意料不到的问题。 文档中关于这个方法的介绍有两层意思&#xff1a; 该方法…

爬虫1-爬虫入门

爬虫 通过编写程序来获取到互联网上的资源 需求:用程序模拟浏览器 输入一个网址 从该网址中获取到资源或者内容 """ File: 01入门.py Author: chde_wang Date: 2021-04-19 14&#xff1a;30&#xff1a;31 Description: """ # 爬虫 通过编写程…

notepad多行编辑_Windows 10 UWP 推荐 | 极具现代感的轻量化文本编辑器:Notepads

柒才也许你正在用VS Code, Notepad或者Sublime&#xff0c;但是相信很多小伙伴跟我一样&#xff0c;在快速记录笔记或者修改配置文件的时候还是会用Windows系统自带的记事本Notepad.exe&#xff08;毕竟启动速度快&#xff0c;界面清爽&#xff09;可是问题在于Windows 10自带的…

爬虫2-web请求与http协议

1web请求 1服务器渲染 在服务器那边直接把数据和html整合在一起&#xff0c;统一返回给浏览器 在页面源代码中可以看到数据 2客户端渲染 第一次请求只拿到html骨架&#xff0c; 第二次请求拿到数据&#xff0c;进行数据分析 在页面源代…

python中读取txt文件、统计其中所有字母出现的频度_Python编程小技巧:如何统计序列中元素的出现频度...

原标题&#xff1a;Python编程小技巧&#xff1a;如何统计序列中元素的出现频度实际案例 某随机序列中&#xff0c;找到出现次数最高的三个元素&#xff0c;他们的出现次数是多少&#xff1f; 对某英文文章的单词进行词频统计&#xff0c;找到出现次数最高的10个单词&#xff0…

爬虫3-request的get与post简单使用

requests.get # 安装request pip install requests # import requests # url "http://www.sogou.com/web?query周杰伦" # resp requests.get(url) # 地址栏链接 一定是get方式提交 # print(resp) # print(resp.text) # 拿到网页源代码 访问被拦截# import requ…