当前位置:网站首页>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这四个关键字。
边栏推荐
- 离线安装activeMq
- PyTorch Study Notes 08 - Loading Datasets
- 【Latex】TexLive+VScode+SumatraPDF 配置LaTex编辑环境
- 关于网络安全法的个人理解
- Cholesterol-PEG-Azide CLS-PEG-N3 Cholesterol-PEG-Azide MW:3400
- Rejection sampling note
- 哈希表基础
- Image binarization processing of opencv
- IDEA控制台不能输入信息的解决方法
- MySQL free installation download and configuration tutorial
猜你喜欢

911崩了,自养号测评环境IP有哪些更好的选择

MW: 3400 4-Arm PEG-DSPE four-arm-polyethylene glycol-phospholipid a saturated 18-carbon phospholipid

Attention based ASR(LAS)

Unity Text一个简单的输入特效

Chemical Reagent Phospholipid-Polyethylene Glycol-Amino, DSPE-PEG-amine, CAS: 474922-26-4

Pytorch study notes 7 - processing input of multi-dimensional features

Pytorch Daily Practice - Predicting Surviving Passengers on the Titanic

IDEA概述和安装及调试

C语言数组的深度分析

MySQL free installation download and configuration tutorial
随机推荐
顶级程序员都是怎么做的?
[已解决]ssh连接报:Bad owner or permissions on C:\\Users/XXX/.ssh/config
Virtual machine view port number process
The array technique, my love
Remote file xxx is mapped to the local path xxx and can't be found. You can continue debugging....
DingTalk Enterprise Internal-H5 Micro Application Development
【Latex】TexLive+VScode+SumatraPDF 配置LaTex编辑环境
Learn how to get a database connection with JDBC
概率论相关笔记
cenos版本查询,及离线安装zip和unzip
UR3机器人雅克比矩阵
pyspark.ml feature transformation module
TCP与UDP协议的区别,以及TCP的三次握手和四次挥手
国际站卖家大促攻略,只需要做好这几件事
Unity转微信小游戏与JS交互
DOM操作案例1-点击,使表格的颜色切换(点击单元格,整行或整列颜色切换)
mPEG-DSPE 178744-28-0 Methoxy-polyethylene glycol-phosphatidylethanolamine linear PEG phospholipids
数据分析之SQL面试真题
Webrtc从理论到实践二: 架构
超详细!!!让你了解冒泡排序的底层逻辑和思想
