当前位置:网站首页>ES6-02-let和const关键字
ES6-02-let和const关键字
2022-07-31 05:18:00 【春意迟迟、】
1.理解代码块是理解let、const的前提:
(1)var obj={name:"karen"} 对象
(2)var fn=function(){} 函数
(3){}或者if(){}或者for(){} 代码块
这些都属于代码块。
<script> // 例1:此处var是全局变量 { var a=20; var b=30; console.log(a); } console.log(b); </script>运行结果为:20 30
<script> // 例2: if(true){ var a=10; console.log(a); } console.log(a); </script>运行结果为:10 10 此处两个a都打印了
<script> // 例3: if(false){ var a=10; console.log(a); } console.log(a); </script>运行结果为:undefined
分析:因为if条件为false,里面的代码不运行,所以a就没有定义和赋值,也不会运行if语句块里面的打印语句;第二个打印语句对a有隐式的声明,但没赋值,所以结果为undefined。
<script> // 代码块的体现:如果我想跳过i=1的循环,而不是里面的循环 mylabel:for(var i=0;i<3;i++){ for(var j=0;j<5;j++){ if(i=1){ continue mylabel; } } } </script>
2.ES6新的变量修饰符let关键字
首先要清楚:var:可以声明的时候不赋值、 可以先访问再声明、可以声明相同的变量名;
let:也可以声明的时候不赋值、不可以先访问再声明、不可以声明相同的变量名
<script> // 块级作用域: { let a=100; console.log(a,"第一个a") a="hello"; console.log(a,"第二个a") } console.log(a,"第三个a") </script>运行结果为:100 第一个a hello 第二个a 报错
分析:100、hello顺寻执行没有问题,第三次报错是因为let声明的a有作用域,是个局部变量,而第三次打印时,全局变量没有定义a,所以找不到a就报错
<script> for(var i=0;i<10;i++){ setTimeout(function(){},100) } console.log(i) </script>运行结果为:
![]()
<script> for(let i=0;i<10;i++){ setTimeout(function(){ console.log(i) },100) } console.log(i) </script>运行结果为:
分析:第一次打印是for循环外面的i,此处的i没有声明;接着才运行for循环里面的函数,打印函数里面的i。(let关键字是有作用域的)
<!-- 笔试题 -->、 <script> let a=90; if(false){ console.log(a) var a=20; } console.log(a) </script>运行结果为:报错
分析:因为let声明的a和var声明的a在同一作用域,而let关键字在同一作用域不能声明同名变量;此处虽然if的条件为false,但var根据形实函运的顺序,var a;被隐式声明了,它与let声明的a都存在于全局变量,所以会报错。
<!-- 笔试题 -->、 <script> let a=90; if(false){ console.log(a) let a=20; } console.log(a) </script>运行结果为:90
分析:let关键字不会隐式提升,所以当if不成立时,里面的代码没有运行,所以结果为90
<!-- 笔试题 -->、 <script> if(true){ let a=20; } console.log(a) </script>结果会报错,因为let有作用域,let会形成暂时性死区
<!-- 笔试题 -->、 <script> let a=90; if(true){ console.log(a) let a=20; } </script>结果会报错
分析:if里面的let形成暂时性死区,打印语句就识别不了外面的a,就识别里面的a,里面的a是用let声明的,且位于打印语句之后,就报错了。
3.js的常量修饰符 const
const修饰的常量不可以被修改。相当于只能初始化一次(初始化:第一次赋值),且const关键字在声明的时候就必须赋值。
<script> const a=60; a=80; </script>运行结果为:报错 因为const关键字只能初始化一次,值不能被修改。
<script> const b; b=30; </script>运行结果为:报错 因为const关键字在声明的时候就必须初始化。
修饰标识符的只有var、let、const、function这四个关键字。
边栏推荐
- 多线程截取视频为每帧
- Unity版本升级问题总结
- Remote file xxx is mapped to the local path xxx and can‘t be found. You can continue debugging....
- IDEA overview and installation and debugging
- 钉钉H5微应用免登鉴权
- 哈希表基础
- Pytorch study notes 7 - processing input of multi-dimensional features
- DOM操作案例1-点击,使表格的颜色切换(点击单元格,整行或整列颜色切换)
- box-shadow相关属性
- 小型网站组建(ENSP)
猜你喜欢

CSDN上markdown编写的一些便捷操作

nacos1.4.1创建配置报错

【Rhapsody学习笔记】4:Relations

什么样的人不适合入行编程?你真的适合学习编程吗?

Fluorescein-PEG-DSPE Phospholipid-Polyethylene Glycol-Fluorescein Fluorescent Phospholipid PEG Derivatives

Four common ways of POST to submit data

【内网开发日记】用websocket手搓一个聊天软件

DOM操作-案例:切换背景图片

Webrtc从理论到实践一:初识
![[Solved] ssh connection report: Bad owner or permissions on C:\\Users/XXX/.ssh/config](/img/53/8b5a12e7ed551dca52ada5dbb5d6b5.png)
[Solved] ssh connection report: Bad owner or permissions on C:\\Users/XXX/.ssh/config
随机推荐
Unity Text一个简单的输入特效
DOM-DOM的介绍以及通过方法获取元素
Wlan实验(ENSP)
C语言静态变量static
衡量 DevOps 成功与否的重要度量指标
记一次QT 2D 画图 实现3D动态效果
文件内容浏览cut、uniq、sort、tr命令的使用,
Webrtc从理论到实践三:角色
IDEA控制台不能输入信息的解决方法
会话和饼干,令牌
2021-09-30
CAS: 1403744-37-5 DSPE-PEG-FA Phospholipid-Polyethylene Glycol-Folic Acid for Scientific Research
2021年开发人员的绊脚石:构建时间长
C语言对文件的操作(完整版)
学习JDBC之获取数据库连接的方式
CSDN上markdown编写的一些便捷操作
通过js禁止ctrl+滚轮放缩浏览器页面,禁止用手势放大
顶级程序员都是怎么做的?
钉钉企业内部-H5微应用开发
pyspark.ml feature transformation module
