let,const与var的学习

news/2025/3/10 21:57:48/文章来源:https://www.cnblogs.com/xiao-zhiqiang/p/18763760

1.let和const 与 var 在变量提升上的区别

let和const和var一样都存在变量提升(在编译阶段变量会被提升至作用域的顶部),但是const和let存在暂时性死区( 从变量进入作用域的那一刻,到变量被声明并初始化的那一行代码执行完之前)在声明之前不能被访问

//  输出为undefined,
//  原因是var 变量的声明被提升到作用域顶部,但不会提升赋值,因此访问时是 undefinedconsole.log(a);var a = 10;
//  输出报错:Cannot access 'b' before initialization
//  因为b变量的声明被提升到作用域顶部,但不会提升赋值,且存在暂时性死区,不能被访问,所以报错console.log(b);let b = 20;

 

2.let和const 与 var 在作用域上的区别

var的作用域:在函数内部则是函数作用域,在函数外部则是全局作用域,

let和const的作用域是块级作用域, 即它只在 {} 内可访问

    if (true) {var c = 10;let c1 = 10;}//  输出c = 10 //  var 声明的变量,如果在块级作用域(如 if 或 for)内部声明,//  它也会被提升到全局作用域,注意:var在函数作用域内则在函数作用域内声明console.log(c);//  输出c1 is not defined,//  因为c1在test函数外面,不在块级作用域里面console.log(c1);

特例:let和const不会污染全局作用域,vari 是一个全局变量,因此所有函数引用的都是最终的 i

var arr = [];
for (var i = 0; i < 10; i++) {arr[i] = function () {return i;};
}
// 输出10
console.log(arr[5]());var arr = [];
for (let i = 0; i < 10; i++) {arr[i] = function () {return i;};
}
// 输出5
console.log(arr[5]());

3.let和const 与 var 在声明变量上的区别

var能重复被声明,let和const不能被重复声明

    var d = 10;var d = 20;//  输出d = 20console.log(d);let e = 10;//  let e = 20;//  输出Identifier 'e' has already been declared//  因为e已经声明过了//  console.log(e);

4.let和const在值改变上的区别

let声明后的变量能重新被赋值,const声明后的值是一个常量不能重新被赋值(ps:const定义的对象内部的属性可以被改变)

    let f = 10f = 20//  输出f为20console.log(f)const g = 10g = 20//  输出g为Assignment to constant variable//  原因是g不能重新被赋值,g被声明为一个常量console.log(g)const obj = { name: "Tom" };//  允许修改对象内部属性obj.name = "Jerry";//  输出Jerry console.log(obj.name); 

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

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

相关文章

硅基流动+Chatbox实现deepseek R1使用自由

解锁 DeepSeek R1 全能力:高性价比AI对话全流程指南🌟 用最低成本体验顶尖开源模型,对话成本低至 2 分钱/次!一、注册 SiliconFlow 领取千万Tokens▶️ 操作步骤:点击专属链接注册:https://cloud.siliconflow.cn/i/KoKtjLvD 手机验证码登录 → 立即获得 2000万 Tokens(…

3.1.1 线性回归的基本元素

看看批量梯度下降和小批量梯度下降的图形,与我们的理解是相符的注意到小批量梯度下降不是严格单减的,只是趋势是单调减少的(图中的纵轴Cost指的是对于整个训练数据的损失) 每次的批量的大小显然是一个超参数。当批量大小为\(1\)的时候叫做随机梯度下降,当批量大小为\(m\)的…

报错

SSM整合报org.springframework.beans.factory.NoSuchBeanDefinitionException 显示没有找到serviceImpl对应的bean,但@autowired显示正常原因:web.xml文件中没有配置监听器ContextLoaderListener,导致web服务器启动后,没有读取Spring的配置文件,使得bean没有注入到Spring的…

ssh登录ubuntu后终端不显示颜色

1、在 ~/.bashrc 文件找到 “#force_color_prompt=yes”,去掉前面的注释; 2、在 ~/.bash_profile文件种添加以下脚本,并执行 “source ~/.bash_profile”# if running bash if [ -n "$BASH_VERSION" ]; then # include .bashrc if it exists if [ -f "$…

Echarts圆环图实现进度条末尾带一个方块的效果

效果这样 直接上代码吧 <template><div ref="chartDom" style="width: 260px; height: 460px; background-color: white"></div> </template><script setup lang="ts"> // import { useI18n } from vue-i18n // i…

CF2068E. Porto Vs. Benfica

Porto Vs. Benfica 翻译自官方题解。我们首先做一些定义,这将帮助我们: 定义。 用 \(f(v)\) 表示支持者俱乐部从顶点 \(v\) 出发,想要到达顶点 \(n\) 所需的最少道路数,且警察仍然可以封锁恰好一条道路。 因此,\(f(1)\) 是问题的答案,且 \(f(n) = 0\)。 定义。 用 \(g(v,…

使用 Power Automate发送图文并茂的Teams消息

前言最近,有朋友使用Automate发送Teams消息,发现如果图片在SharePoint中,发送的时候因为认证的问题图片没办法显示。其实,我们可以将图片转换成Base64流进行引用,就能正常的显示了。正文1.我们新建一个Automate Flow,如下图:2.然后,添加Teams操作,如下图:3.消息我们需…

006TypeScript开发实战

一、全家桶-状态管理 状态管理的选择 vuex:目前依然使用较多的状态管理库 pinia:强烈推荐,未来趋势的状态管理库(用这个)1、 安装:npm install pinia 安装完成 2、新建文件夹 这里这样写 这里引入pinia 新建文件 这样写 这里引用一下 可以看到页面上 点击之后变成

《Python极客项目编程(第2版)》 | PDF免费下载 | epub free download

本书并不介绍Python语言的基础知识,而是通过一系列有趣的项目,展示如何用Python解决各种实际问题,以及如何使用一些流行的Python库。点击下载书籍信息 作者: [美] 马赫什文基塔查拉姆(Mahesh Venkitachalam) 出版社: 人民邮电出版社 原作名: Python Playground: Geeky Pro…

课堂教学质量评价分析系统 AI+教育

课堂教学质量评价分析系统的核心技术基于YOLOv11和CNN算法,课堂教学质量评价分析系统检测到的行为数据(如玩手机、举手、睡觉、交头接耳、趴桌子、行走运动)和表情数据(如开心、厌恶、愤怒、悲伤、沮丧、恐惧、无表情)会被传递到情感模型进行进一步分析。同时,系统还会结…

04. 串口通信

一、串口通信简介串口通信是一种设备间常用的串行通信方式,串口按位(bit)发送和接收字节。串口通信的数据包由发送设备的 TXD 接口传输到接收设备的 RXD 接口。在串口通信的协议层中,规定了数据包的内容,它由起始位、主体数据、校验位以及停止位组成,通讯双方的数据包格式…

【Azure K8S | AKS】在AKS的节点中抓取目标POD的网络包方法分享

问题描述 当在AKS中遇见复杂的网络问题,想要进入到特定的POD中来抓取网络文件包进行分析。特分享抓取网络包的方法!操作步骤 第一步:使用kubectl get pods命令确认问题Pod所在的Node 第二步:使用node shell登录到相应node上 kubectl node-shell <node name> 第三步:…