let

1.ES6 新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。

2.不存在变量提升

var命令会发生”变量提升“现象,即变量可以在声明之前使用,值为undefined。这种现象多多少少是有些奇怪的,按照一般的逻辑,变量应该在声明语句之后才可以使用。

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

3.暂时性死区

在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”(temporal dead zone,简称 TDZ)。

4.不允许重复定义

cons

1.声明一个只读的常量。一旦声明,常量的值就不能改变,而且必须立即初始化,不能留到以后赋值。

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

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

本质

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

参考:http://es6.ruanyifeng.com/#docs/let

转载于:https://www.cnblogs.com/dingxy/p/9070752.html

ES6-let和const命令相关推荐

  1. ES6 let和const 命令

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

  2. ES6 let和const命令(3)

    const 用来声明常量.一旦声明,就不能改变. const在声明必须初始化,只声明不赋值会出错 const的作用域与let一样,只在声明的块级作用域有效. const命令声明的常量也不提升,同样存在 ...

  3. es6 let和const命令(1)

    基本用法 ES新增了let命令,用于声明变量.其用法类似于var,但是所声明的变量只在let命令所在的代码块中有效. for(let i = 0;i<5;i++) {} console.log( ...

  4. 1. ES6 let 和 const 命令

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

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

  6. es6 var、let、const命令

    1.let和var <1>let声明的变量仅在块级作用域内有效: var声明的变量在全局有效: <2> var变量乐意在声明之前使用,输出undefined; let 不可以, ...

  7. 【ES6】let命令、const命令、解构赋值

    let命令 ES6 新增了let命令,用来声明变量.它的用法类似于var,但是也存在新的特性. let所声明的变量,只在let命令所在的代码块内有效,避免全局污染.(适用于for循环) {let a ...

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

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

  9. 关于ES6中let 和 const 命令的用法以及注意事项:

    let命令: 基本用法: let定义: 用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效. <script> //let代码块内部定义的变量,与var ...

  10. ES6的let、const命令

    1.let命令: ES6 新增了let命令,用来声明变量.它的用法类似于var,但是 let 所声明的变量,只在let命令所在的代码块内有效.        代码如下: {let a = 1;var ...

最新文章

  1. 一个数三位立方和相加等于本身_【题解信奥】打印水仙花数(粉丝求助)
  2. 35岁前务必成功的12级跳
  3. python—多线程之信号量
  4. leetcode343. 整数拆分(dp)
  5. 的run窗口不显示_「玩转deepin」如何安装VirtualBox增强功能使得deepin全屏显示?...
  6. oracle加密可以跟java一致吗,在GBase 8s上使用java udr实现Oracle兼容的加密解密功能...
  7. 六界仙尊h5服务器维护多久,《六界仙尊》5月6日更新维护 公开虚天BOSS坐标
  8. 前端框架 Bootstrap 4.4.0 发布
  9. countanddown java_Java多线程之CountDownLatch
  10. C++新特性探究(十一):enum class(struct)
  11. 易懂分布式 | Kademlia算法
  12. struts2教程_Struts 2教程– Struts2教程
  13. 学习笔记day1-计算机介绍
  14. 转载--numpy中的ravel()、flatten()、squeeze()的用法与区别
  15. boostrap框架学习
  16. java Socket编程
  17. 银行卡四要素认证api接口_银行卡实名认证查询-银行卡四要素鉴权
  18. 计算机科学本质源自于数学思维,计算思维的特点、特征:形式化、程序化、机械化...
  19. HR套招的十大经典面试问题
  20. 我的硬件工程师成长之路

热门文章

  1. boost::all_degree_centralities用法的测试程序
  2. boost::cuthill_mckee_ordering用法的测试程序
  3. boost::gil::channel_view用法的测试程序
  4. boost::foreach模块右值const的测试程序
  5. Boost:boost::source_location的用法测试程序
  6. Boost:双图bimap与散列索引的测试程序
  7. Boost:使用类array <>的简单示例
  8. VTK:可视化之LabeledMesh
  9. OpenCV推断onnx格式目标检测模型(SSD)(附完整代码)
  10. OpenCV GrabCut分割的实例(附完整代码)