ES6-let和const命令
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命令相关推荐
- ES6 let和const 命令
ES6 let 和 const 命令 1. 变量声明 2. 变量提升问题 3. 暂时性死区(TDZ) 4. 块级作用域 4.1 为什么需要块级作用域? 4.2 ES6的块级作用域 4.3 块级作用域和 ...
- ES6 let和const命令(3)
const 用来声明常量.一旦声明,就不能改变. const在声明必须初始化,只声明不赋值会出错 const的作用域与let一样,只在声明的块级作用域有效. const命令声明的常量也不提升,同样存在 ...
- es6 let和const命令(1)
基本用法 ES新增了let命令,用于声明变量.其用法类似于var,但是所声明的变量只在let命令所在的代码块中有效. for(let i = 0;i<5;i++) {} console.log( ...
- 1. ES6 let 和 const 命令
- ES6之let(理解闭包)和const命令
ES6之let(理解闭包)和const命令 最近做项目的过程中,使用到了ES6,因为之前很少接触,所以使用起来还不够熟悉.因此购买了阮一峰老师的ES6标准入门,在此感谢阮一峰老师的著作. 我们知道,E ...
- es6 var、let、const命令
1.let和var <1>let声明的变量仅在块级作用域内有效: var声明的变量在全局有效: <2> var变量乐意在声明之前使用,输出undefined; let 不可以, ...
- 【ES6】let命令、const命令、解构赋值
let命令 ES6 新增了let命令,用来声明变量.它的用法类似于var,但是也存在新的特性. let所声明的变量,只在let命令所在的代码块内有效,避免全局污染.(适用于for循环) {let a ...
- 【面试题】【ES6】let和const命令 (面试必看)
给大家推荐一个实用面试题库 1.前端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库 1.let命令 基本用法 用法类似于var,但是所声明的变量,只在let命令所在 ...
- 关于ES6中let 和 const 命令的用法以及注意事项:
let命令: 基本用法: let定义: 用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效. <script> //let代码块内部定义的变量,与var ...
- ES6的let、const命令
1.let命令: ES6 新增了let命令,用来声明变量.它的用法类似于var,但是 let 所声明的变量,只在let命令所在的代码块内有效. 代码如下: {let a = 1;var ...
最新文章
- 一个数三位立方和相加等于本身_【题解信奥】打印水仙花数(粉丝求助)
- 35岁前务必成功的12级跳
- python—多线程之信号量
- leetcode343. 整数拆分(dp)
- 的run窗口不显示_「玩转deepin」如何安装VirtualBox增强功能使得deepin全屏显示?...
- oracle加密可以跟java一致吗,在GBase 8s上使用java udr实现Oracle兼容的加密解密功能...
- 六界仙尊h5服务器维护多久,《六界仙尊》5月6日更新维护 公开虚天BOSS坐标
- 前端框架 Bootstrap 4.4.0 发布
- countanddown java_Java多线程之CountDownLatch
- C++新特性探究(十一):enum class(struct)
- 易懂分布式 | Kademlia算法
- struts2教程_Struts 2教程– Struts2教程
- 学习笔记day1-计算机介绍
- 转载--numpy中的ravel()、flatten()、squeeze()的用法与区别
- boostrap框架学习
- java Socket编程
- 银行卡四要素认证api接口_银行卡实名认证查询-银行卡四要素鉴权
- 计算机科学本质源自于数学思维,计算思维的特点、特征:形式化、程序化、机械化...
- HR套招的十大经典面试问题
- 我的硬件工程师成长之路
热门文章
- boost::all_degree_centralities用法的测试程序
- boost::cuthill_mckee_ordering用法的测试程序
- boost::gil::channel_view用法的测试程序
- boost::foreach模块右值const的测试程序
- Boost:boost::source_location的用法测试程序
- Boost:双图bimap与散列索引的测试程序
- Boost:使用类array <>的简单示例
- VTK:可视化之LabeledMesh
- OpenCV推断onnx格式目标检测模型(SSD)(附完整代码)
- OpenCV GrabCut分割的实例(附完整代码)