ECMAScript 6 之 let 和 const 命令

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

时间: 2024-08-02 19:02:57

ECMAScript 6 之 let 和 const 命令的相关文章

ECMAScript 6 学习 let 和 const命令

一.主要内容: 二.含义.注意事项.使用方法: 1.let 命令:用来声明一个变量,和var非常相似. 使用let声明变量的注意事项: 1).使用let声明的变量,所声明的变量只在命令所在的代码块内有效. { let a = 2; var b = 3; console.log(a);      //2 } console.log(a);        //a is not defined console.log(b);          //3 2).使用let命令声明的变量在域解析的时候不会被

《ECMAScript 6 入门- 第一章 lef和const命令》 —— 摘抄

1 . lef命令 ES6新增了let命令,用来声明变量.它的用法类似于var,let声明的变量,只在let命令所在的代码块内有效. { let a = 10; var b = 1; } a // ReferenceError: a is not defined. b //1 2.const命令 const也用来声明变量,但是声明的是常量.一旦声明,常量的值就不能改变. const PI = 3.1415; PI // 3.1415 PI = 3; PI // 3.1415 const PI =

ECMAScript 6 let和const命令

let命令 ES6新增了let命令,用来声明变量,用法类似于var,但是所声明的变量只在let代码块中生效,并且在代码块中,使用let命令声明变量之前,变量都是不可用的,这在语法上被称为暂时性死区. let无法存在变量提升现象,所以变量一定要在声明之后使用,否则会报错. let无法重复声明同一个变量,这与var是不同的. let是为JavaScript新增了块级作用域. const命令 const命令声明一个只读的常量,一旦声明,常量的值就不能改变.所以它一旦声明变量就必须立即初始化. cons

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

ES6之let(理解闭包)和const命令 最近做项目的过程中,使用到了ES6,因为之前很少接触,所以使用起来还不够熟悉.因此购买了阮一峰老师的ES6标准入门,在此感谢阮一峰老师的著作. 我们知道,ECMAScript 6即ES6是ECMAScript的第五个版本,因为在2015年6月正式发布,所以又成为ECMAScript2015.ES6的主要目的是为了是JS用于编写复杂的大型应用程序,成为企业级的开发语言. 说明:由于有时候我们希望得知es6代码的具体实现原理或者说希望能够转化为es5使用,

ECMAScript 6中let和const详解

1:Let命令 (1)Let定义块级作用域的变量,var定义的变量会提升.Let不会提升.如下.可以先用是undefined但是let在定义之前是不能用的.会报错Uncaught ReferenceError: letter is not defined(-) console.log(color) console.log(letter) var color = 'red'; let letter = 'a' 只要块级作用域内存在let命令,声明的变量不受外部影响. var tmp = 123;

let 和const命令

ES6新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效.换句话说,let声明了块级作用域. 输出 看下面代码: 输出: 变量i是var声明的,在全局范围内都有效,所以全局只有一个变量i.每一次循环,变量i的值都会发生改变,而循环内被赋给数组a的function在运行时,会通过闭包读到这同一个变量i,导致最后输出的是最后一轮的i的值,也就是10. 可以使用let来重新修改代码: 输出:4 如果使用let,声明的变量仅在块级作用域内有效,最后输

let & const 命令

*,html { font-size: 16px } 一.let命令 用于声明变量. 1) 所声明的变量只在let命令所在代码块内有效.(块级作用域) { let a=10; var b=1; } a // ReferenceError: a is not defined b // 1 var li=document.getElementsByTagName("li"); for(let i=0;i<li.length;i++){ li[i].addEventListener(&

let和const命令

基本用法 ES6新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效. { let a = 10; var b = 1; } a // ReferenceError: a is not defined. b // 1 上面代码在代码块之中,分别用let和var声明了两个变量.然后在代码块之外调用这两个变量,结果let声明的变量报错,var声明的变量返回了正确的值.这表明,let声明的变量只在它所在的代码块有效. for循环的计数器,就很合适使用

ES6--let和const命令

1.let与const之间的区别: 1)let可修改,const是常量不可修改: 2.let,const与var之间的区别: 1)let,const不存在变量提升:所以不用担心预解释和作用域的问题: 2)在同一个块级作用域下不允许重复声明同一个变量: 3)ES6 允许在块级作用域内声明函数, 函数声明类似于var,即会提升到全局作用域或函数作用域的头部, 同时,函数声明还会提升到所在的块级作用域的头部: 4)ES6为了保持兼容性,var命令和function命令声明的全局变量,依旧是全局对象的属