码迷,mamicode.com
首页 > 其他好文 > 详细

《ES6标准入门》10~28Page let和const命令 变量的解构赋值

时间:2017-04-29 18:56:01      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:数值   标准   入门   const   reference   font   span   存在   全局   

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命令 变量的解构赋值

标签:数值   标准   入门   const   reference   font   span   存在   全局   

原文地址:http://www.cnblogs.com/zainking/p/6785715.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!