1、let基本用法

1.1、声明变量

  let声明的变量只在它所在的代码块有效。

1.2、不存在变量提升

var命令会发生”变量提升“现象,即变量可以在声明之前使用,值为undefined;

let命令改变了语法行为,它所声明的变量一定要在声明后使用,否则报错。

1.3、暂时性死区(temporal dead zone,简称 TDZ)

只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响;

ES6 明确规定,如果区块中存在letconst命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。总之,在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”(temporal dead zone,简称 TDZ);

暂时性死区的本质就是,只要一进入当前作用域,所要使用的变量就已经存在了,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用该变量。

 

1.4、不允许重复声明

   let不允许在相同作用域内,重复声明同一个变量。

2、块级作用域

2.1、为什么要使用块级作用域?

第一种场景,内层变量可能会覆盖外层变量。

第二种场景,用来计数的循环变量泄露为全局变量。

3、const命令

3.1、const声明一个只读的常量。一旦声明,常量的值就不能改变,声明的同时必须初始化。

3.2、const的作用域与let命令相同:只在声明所在的块级作用域内有效。

3.3、const命令声明的常量也是不提升,同样存在暂时性死区,只能在声明的位置后面使用。

3.4、const声明的常量,也与let一样不可重复声明。

const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址所保存的数据不得改动。对于简单类型的数据(数值、字符串、布尔值),值就保存在变量指向的那个内存地址,因此等同于常量。但对于复合类型的数据(主要是对象和数组),变量指向的内存地址,保存的只是一个指向实际数据的指针,const只能保证这个指针是固定的(即总是指向另一个固定的地址),至于它指向的数据结构是不是可变的,就完全不能控制了。

转载于:https://www.cnblogs.com/wangyfax/p/9855804.html

ECMAScript 6 之 let 和 const 命令相关推荐

  1. 阮一峰 《ECMAScript 6 入门》:let 和 const 命令

    以下内容全文出自 阮一峰的书: <ECMAScript 6 入门> 电子版地址:ES 6标准入门(第3版) let 命令 基本用法 ES6 新增了let命令,用来声明变量.它的用法类似于v ...

  2. ES6之let(理解闭包)和const命令

    ES6之let(理解闭包)和const命令 最近做项目的过程中,使用到了ES6,因为之前很少接触,所以使用起来还不够熟悉.因此购买了阮一峰老师的ES6标准入门,在此感谢阮一峰老师的著作. 我们知道,E ...

  3. 【面试题】【ES6】let和const命令 (面试必看)

    给大家推荐一个实用面试题库 1.前端面试题库 (面试必备)            推荐:★★★★★ 地址:前端面试题库 1.let命令 基本用法 用法类似于var,但是所声明的变量,只在let命令所在 ...

  4. js中的const 命令

    js中的const 命令 一直以来我在我字典里认为const 命令就是用来声明一个常量,然后并非如此,这也是我在工作中偶然发现的,然后查了下文档才得知,记录在档,以供参考: const 定义 cons ...

  5. ES6 let和const 命令

    ES6 let 和 const 命令 1. 变量声明 2. 变量提升问题 3. 暂时性死区(TDZ) 4. 块级作用域 4.1 为什么需要块级作用域? 4.2 ES6的块级作用域 4.3 块级作用域和 ...

  6. let const 命令

    一.let命令 用于声明变量. 1) 所声明的变量只在let命令所在代码块内有效.(块级作用域) {let a=10;var b=1; } a // ReferenceError: a is not ...

  7. 2.let和const命令

    1.let命令 let声明的变量,只在let命令所在的代码块内有效. {let a = 10;var b = 1; }a // ReferenceError: a is not defined. b ...

  8. ES6-let和const命令

    let 1.ES6 新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效. 2.不存在变量提升 var命令会发生"变量提升"现象 ...

  9. ES6新特性之let和const命令

    let 和 const 命令 var 之前,我们写js定义变量的时候,只有一个关键字: var var 有一个问题,就是定义的变量有时会莫名奇妙的成为全局变量. 例如这样的一段代码: for(var ...

最新文章

  1. mysql递归sql_SQL如何实现MYSQL的递归查询,SQL实现MYSQL递归
  2. MPB:南土所冯有智组-基于微量热曲线的微生物群落代谢特征分析
  3. 系统发生 1219 错误。 提供的凭据与已存在的凭据集冲突。
  4. 微信小程序lottiejs动画事例代码
  5. Android 毛小软件,毛库官方app
  6. 通过测试想到的一些问题
  7. 聚类算法应用场景实例十则
  8. VS2015如何使自己的exe文件在别人的电脑上运行(找不到MSVCP140D.dll)
  9. 【荐】万能清除浮动样式
  10. Java基础复习——继承机制
  11. OpenCV-Python实战(23)——将OpenCV计算机视觉项目部署到云端
  12. 2021计算机二级考试五月报名,2021年5月全国计算机等级考试报名时间
  13. arcgis 批量计算几何_ArcGIS四种计算图斑面积的方法
  14. hp打印机没有右键扫描_win7右键点击打印机图标没有扫描选项怎么解决
  15. 无源晶振负载电容值CL匹配方法及说明
  16. i2c-tools的使用方法及举例
  17. 【人工智能】谓词表示法与产生式知识表示实验
  18. win11右键如何直接打开所有选项
  19. 使用卷积神经网络进行实时面部表情检测
  20. elang 游戏 生成全局id

热门文章

  1. Linux连接荣耀路由器pro2,荣耀路由pro2和电脑怎么连接?连接一体机方法
  2. pycharm在linux安装插件,Pycharm安装go插件,开始go之旅
  3. 177. Nth Highest Salary
  4. 算法笔记--KMP算法 EXKMP算法
  5. java 多线程下载文件
  6. java 运用poi读取Excel 文件代码 demo
  7. JAVA中for循环写杨辉三角_java使用for循环输出杨辉三角
  8. redis 槽点重新分配 集群_弄懂一致性哈希后我打通了redis分区集群的原理
  9. 如何检测过时的Kubernetes API
  10. 2017年大白菜系统操作说_为什么操作系统在2017年更重要