ES6Let简介 使用Let声明变量好处

ES6 let声明变量总结 用自己易于理解的语言总结的,欢迎各位大佬指点~      let声明变量特点      1、用来声明块级作用域      let声明的变量只在其块级作用域内有效,而var通常在函数作用域或全局作用域内有效 块级作用域:指用花括号{ }包裹起来形成的语句块,如if、for、while循环语句等。 if(true){ let a = 111; console.log(a); // 阅读详情

使用Let声明变量

ES6不仅引入了let关键字用于解决变量声明的问题,同时引入了块级作用域的概念。

块级作用域:

代码执行时遇到花括号{会创建一个块级作用域、花括号}结束,销毁块级作用域。


   let a = 123;//全局作用域定义
   
   {
   	let a = 456;//然后定义块级作用域
   	console.log(a)//使用的时块级作用域中的a
   }
   console.log(a)//使用的全局作用域中的a
   
有了块级作用域之后它的使用范围跟函数一样被限制在了里面
这样更符合常规语言的逻辑,几乎所有的语言都是这样的,但是因为JS以前有变量提升导致了以前很混乱
现在有了```let```之后有效的改善了这样的局面

全局变量挂载到全局对象:全局对象污染问题


let a = 123;
console.log(a)
//输出undefined

而用var声明赋值的话则会挂载到全局
仅仅是这么一个改动我们都无法拒绝使用Let

允许重复的变量声明:导致数据被覆盖的问题

let声明变量不允许当前作用域范围内重复声明

变量提升?:怪异数据访问闭包问题

  • 使用let不会有变量提升,因此不能再定义let之前使用它
  • 底层实现上,let声明的变量实际上也会有提升,但是,提升后会将其放入“暂时性死区”,如果访问的变量位于暂时性死区,则会报错Cannot access 'a' before initialization
  • 当代码运行到该变量的声明语句时,会将其从暂时性死区中移除

在循环中let会做特殊处理

  • 在循环中用let声明的循环变量,会特殊处理,每次进入循环体,都会开启一个新的作用域,并且将循环变量绑定到该作用域(每次循环使用的是一个全新的循环变量)
  • 再循环中 使用let声明循环变量,再循环结束后会被销毁
//这时我绑定了10个按钮让咋们在点击时输出对应的i
for (let i = 1; i < 10; i ++) {
	btn.function () {
		console.log(i)//使用的时当前作用域的i
	}
}

  • 使用let时就不会像var一样在同一个作用域下修改的同一个i了
    具体见我写过的JS用var声明变量的不足,里面有详细提到输出时会有什么问题
  • 在此时let会创建10个作用域看起来用的是同一个i但实际上使用的是不同的i。
VCSA的vmware-updatemgr服务无法启动和vSAN界面报“certificate chain is not trusted and thumbprint doesn‘t match”处理 "Unable to update CM service info"和"Server certificate chain is not trusted and thumbprint doesn't match"问题处理 阅读详情

相关推荐

【IC】Redhawk-SC输入件配置

Redhawk sc

u011808788的博客 1777

let声明的变量--详解

let声明的变量具有以下特性: (1)具有块级作用域。 (2)使用let声明的全局变量(全局变量:全局范围内有效),不会成为window对象的属性。 (3)没有变量提升。 (4)变量名不能重复声明,会报错(var已经声明的变量名,let也不能重复声明)。 ps:如果访问一个对象不存在的属性,不会报错,只会出现undefined. 参照:https://blog.youkuaiyun.com/f...

qq_38969618的博客 2671

机器学习预测材料性能:从特征工程到SHAP可解释性分析

机器学习在材料科学中的应用,核心在于将复杂的材料性能预测问题转化为数据驱动的建模任务。其基本原理是通过算法从历史数据中学习特征与目标属性之间的映射关系。这项技术的价值在于能够大幅加速新材料的发现与设计周期,降低传统“试错法”的高昂成本。在工程实践中,它广泛应用于预测如形成能、带隙、弹性模量以及居里温度等关键材料性能。具体到磁性材料领域,居里温度的准确预测对于永磁体和自旋电子器件设计至关重要。本项目深入探讨了如何利用特征工程从材料成分与结构中构建有效描述符,并借助SHAP这一可解释性工具,揭示模型决策背后的物

weixin_27155667的博客 650

一.let声明变量

语法let 变量名=“变量值”let不允许在一个结束有变量和它一样的名字,但是允许修改同一个变量值。

2301_82089195的博客 1045

游戏开发-GM系统的设计

游戏管理员(gm)作为游戏中拥有更高权限的账号,在游戏开发的过程中,我们需要很早的将gm系统做出来,作为测试游戏逻辑具有不可替代的作用。 内容目录 服务端与客户端通讯基本流程 gm命令格式设计 gm系统的实现 服务端与客户端通讯基本流程 服务端与客户端通信,如果基本的网络框架搭建完成,那么我们只需要写好命令就可以了 服务器完成一条命令的添加需要3个过程。 (1)命令格式的定义

微不足道 4616

射频总集篇:(不断更新)

射频每一章涉及到的重点理论/设计方法 CHAPTER 1 传输线理论 输入阻抗Zin,负载阻抗ZL,驻波比ρ,反射系数 CHAPTER 2 波导 矩形波导,圆波导,同轴线 CHAPTER 3 微型带状传输线 微带线的参数设计,带状线的参数设计 CHAPTER 4 ...

jieyannn的博客 1920

let 声明及其特性

let 声明及其特性 1、声明变量 let b, c; let d = "chen"; // 变量赋值 let e = 123, f = 'zc', g = [] // 可以批量赋值 2、特性 2.1 变量不能重复声明 let h = 'stu'; let h = 'tea'; console.log(h) // 报错 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210328233442743.PNG#pic_center) 2.2 块级作用

weixin_44787477的博客 797

【STM32项目】老人健康跌倒检测系统实现(附教程PCB资料)

功能概述 跌倒检测 倾倒告警,人体角度倾斜至阈值触发蜂鸣报警 异常运动,加速度超过正常行动阈值时触发报警 心率监测 实时检测心率数据 血氧监测 实时检测采集血氧 血压测量 血压在线测量 红外体温 非接触体温采集方案 接触式体温采集方案 实时定位 中科微GPSGT-U12双频GPS北斗 GLONASS IRNSS定位系统 NEMA数据解析 可扩展高精度定位方案厘米级 屏幕显示 数据采集显示 告警阈值设置 语音提示 1欢迎使用老人智慧监测系统

洋洋的博客 1万+

【ES6】—let 声明方式

ES6-let 声明方式

m0_37616866的博客 994

中职网络安全2021年国赛Wireshark流量分析题目解析

中职网络安全Wireshark流量分析题目解析

FRANXX_02的博客 6444

【Java基础知识 19】Java接口的作用和意义

Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。

学Java,找哪吒 2万+

变量声明let

声明或定义一个变量 let message; 通过赋值运算符 = 为变量添加一些数据 let message; message = 'Hello'; // 保存字符串,保存到与该变量相关联的内存区域 通过使用该变量名称访问它 let message; message = 'Hello!'; alert(message); // 显示变量内容 定义并赋值 let message = 'Hello!'; alert(message); // 显示变量内容 声明多个变量的一般写法 let user = '

qq_51517771的博客 985

【WRF数据准备】土地利用类型分类标准:USGS+MODIS IGBP 21

【WRF数据准备】土地利用类型分类标准:USGS+MODIS IGBP 21

WW、forever的博客 4476

ES6变量声明:let、var、const全面解析

本文深入剖析ES6中let、var、const三种变量声明方式,详细对比函数作用域与块级作用域的本质区别,解析暂时性死区现象及其重要性。通过典型代码示例演示变量提升、重复声明限制等特性,特别针对const在引用类型中的特殊表现进行说明,最后给出现代JavaScript开发中的变量声明最佳实践方案。

m0_73941339的博客 1727

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

ES6系列之变量声明

在之前的js版本中,声明变量一直都是用var, 这个估计大家都很熟悉了。 那么它的作用呢就是用来声明一个变量,比如像这样子: var a = 10 在这里我们就用var声明了一个变量a 并且在声明的同时给这个变量a赋值了 也就是10; 那么这时候如果我们去引用这个变量,那么得到的结果就是10,这没什么稀奇的,在这里就不再赘述了。 那么在es6里面新增了两个声明变量的方法: 一个是let,用于声明变量。 一个是const,用于声明常量。 我们来看一下这三者之间的区别: 一、let和var的区别 这两个关

Silvia 1万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

es6的使用之let和const

ES6 新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。 { let a = 10; var b = 1; } a // ReferenceError: a is not defined. b // 1 上面代码在代码块之中,分别用let和var声明了两个变量。然后在代码块之外调用这两个变量,结果let声明的变量报错,var...

mlonly的博客 5649

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

ES6 变量、常量声明总结

前言 较之前ES5,新版本在声明上有改变,现根据文档教程,总结下不同之处,时常温习。   一、var  对比  let   1、作用域不同     let只在命令所在的代码块 {} 里有效     ES5只有全局作用域和函数作用域,没有块级作用域,带来很多不合理的场景,比如:     第一种场景,内层变量可能会覆盖外层变量。     

小苏打的博客 4027

ES6中6种声明变量的方法

ES5 只有两种声明变量的方法:var命令和function命令。 ES6 除了添加let和const命令,还有两种声明变量的方法:import命令和class命令。 所以,ES6 一共有 6 种声明变量的方法。 (1) var命令。 var a ;  //undefined var b = 1; var定义的变量可以修改,如果不初始化会输出undefined,不会报错 var 声明...

GoodIdea 3623

ES6 let声明变量(简单易懂)

let关键字声明变量是在es6中引入的 ,使用let声明变量主要有以下特点: 1 使用let声明的变量具有块级作用域 if(true){ let a = 10; console.log(a) //10 } console.log(a) //a is not defined 2 使用let声明的变量没有变量提升 console.log(a) let a = 10;//Cannot access 'a' before initialization 3 使用let声明的变量...

木易的博客 2205

ES6 逐点突破系列 -- 变量声明

ES6系列--变量声明 var 和 let 、const的区别 1. 作用域 2. 变量提升 3. 重复声明 4. 全局对象属性 暂时性死区 const定义常量

前端彭于晏的博客 1万+

var与ES6中const、let声明的变量的区别

好久以前的研究,今天再来回顾一下。 首先我们比较一下使用var声明的变量和不使用var声明的变量的区别: 使用var声明的变量声明前调用,那么该变量的值为undefined;不使用var声明的变量声明前调用直接报错Uncaught ReferenceError:xxx is not difined;使用var声明的变量不可delete,不使用var声明则可以delete掉释放空间。(实

YinghaoGuo的博客 4846

ES6新增声明变量关键字 - let、const

ES6新增声明关键字 在ES5中,变量声明只有var 和function以及隐式声明三种,而ES6中新增了let和const 。 let声明变量 1.let声明的变量不会挂在window中,不会造成全局变量的污染 for (let i = 0; i < 10; i++) { setTimeout(function() { console.log(i); //当前的...

weixin_45846241的博客 1199

一文带你读懂ES6中的变量声明let与const

在变量声明之前的代码区域,无法访问该变量。但如果是引用类型(如数组或对象),const 声明的变量引用地址不能改变,但对象的属性或数组的元素仍然可以被修改。var 的作用域是函数级别的,即它声明的变量在整个函数内都能访问到。var 声明的变量会被提升到函数或全局作用域的顶部,但只有变量声明会被提升,初始化赋值不会。let 是大多数场景下的首选,它避免了 var 的一些问题,适用于大部分的变量声明,尤其是在需要修改变量值的情况下。在上面的例子中,即使 x 是在 if 语句块中声明的,但它仍然可以在外部访问。

baiguo610的博客 1021

1、ES6笔记之let声明变量

笔记代码如下 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-...

Candy_mi的博客 756

ES6——let-const的变量声明以及模板字符串

目录 一.let和const 1.let a.阻止变量提升 b.块级作用域 c.不能重复声明 2.const 二.模板字符串 我们之前JS语言使用的是ES5版本,ES5语言有很多地方存在不合理以及不足,比如变量的提升、内置对象的方法不灵活再或者模块化实现不完善,需要借助art-template等模板引擎来完善和简化等等 ES6则是对ES5版本的升级完善,ES6不是单单的一个版本,它是ES6、ES7、ES8等统称,我们之后学习VUE、React以及Node.js运行环境都需要ES6的支.

世界和我们都不该止步于此 1352

ES6语法中的let、const及class声明

今天无意中发现了一点问题想不通,先记录下来,以免遗忘,期待日后能够解决。 有关let、const和class声明 最初是练习ES6语法的类class的写法的,但是在练习中发现了一个想不通的问题。 在阮一峰老师的《ECMAScript 6 入门》一书中,说到了ES6中class是不存在变量提升的 这一点在之前学习let和const的时候就了解过了,比如: console.log...

境界线上的地平线 1705
上一篇: 一键生成轮播图 banner 插件 代码
下一篇: ES6 const概述,声明常量
苟盛
博客等级 码龄7年 13粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值