《ES6标准入门》10~28Page let和const命令 变量的解构赋值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《ES6标准入门》10~28Page let和const命令 变量的解构赋值相关的知识,希望对你有一定的参考价值。
1.let和const命令
(1)let命令
let命令类似于ES3中的var命令,但是所声明的变量只在let所在的代码块内有效。
1 { 2 let a = 10; 3 var b = 1; 4 } 5 6 console.log(a); //报错 7 console.log(b); //1
let相较var来讲有三个特殊性质,分别是不存在变量提升、暂时性死区和不允许重复声明。
1 //不存在变量提升 2 console.log(a); //报错 3 let a = 1; 4 5 //你无法在let声明变量之前使用它 6 7 //暂时性死区(TDZ) 8 if( true ){ 9 //TDZ开始 10 tmp = ‘abc‘; //ReferenceError 11 console.log(tmp); //ReferenceError 12 13 let tmp; //TDZ结束 14 console.log(tmp); //undifened 15 } 16 //如果区块中存在let和const命令,则这个区块对这些命令的声明变量从一开始就形成封闭作用域。只要在声明之前使用这些变量就会报错。 17 18 //不允许重复声明 19 { 20 let a; 21 var a; //报错 22 } 23 24 { 25 let a; 26 let a; //报错 27 } 28 29 var a; 30 { 31 let a; //不报错 32 }
(2)const
const命令用来声明常量,一旦被改变则会报错。
1 const pi = 3.14; 2 pi = 3.1415; //报错
let、const声明的变量和常量不是全局对象的属性。
2.变量的解构赋值
ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构。
(1)数组解构赋值
let [a, b, c] = [1, 2, 3]; console.log(a); //1
具备Iterator接口的对象,可以进行数组解构赋值。
(2)对象的解构赋值
var { foo, bar } = { foo: "aaa", bar: "bbb" };
如果等号右边是字符串,字符串会被转换成类似数组的对象。
如果等号右边是数值或者布尔值,则会先转换成对象。
以上是关于《ES6标准入门》10~28Page let和const命令 变量的解构赋值的主要内容,如果未能解决你的问题,请参考以下文章
ES6标准入门 第二章:块级作用域 以及 let和const命令