ES6 进修笔记(一)let,const和解构赋值

let和const

let和const是es6新增的两个变量声明关键字,与var的差别点在于:

(1)let和const都是块级作用域,在{}内有效,这点在for轮回中异常有效,只在轮回体内有效。var为函数作用域。

(2)运用let和const声明的变量,不存在变量提拔,必需先声明再运用。运用var声明的变量能够先运用再定义。

(3)不可反复声明。一旦用var,let或许const声明过的变量,再次用let或许const声明时会报错,函数的参数名假如用let或许const在函数体内声明同名的参数时,也会报错。

const特别要点:

(1)const望文生义常量,但这个常量与高等言语的常量有所差别,这里的常量指的是在定义就肯定其值,而且这个值只读,不能够修正;高等言语的常量更狭窄一点;

(2)运用const声明的变量,一旦声明须要马上初始化,只声明的变量没法用const,const a; 编译会报错;而且一旦初始化,就不能转变。

(3)const用于定义一个复合型对象或许数组时,只是对对象或许数组自身不可赋值,但依旧能够为对象增加属性或许为数组push元素。

解构赋值

解构是依据肯定的形式,从数组和对象中提取值,对变量举行赋值,解构表达式的左边是平常[]或许{}。当解构表达式的左边是[]时,右侧也必需是对应的具有可遍历属性的对象,因而能够是[],map或许string;当解构表达式的左边为{}时,javascript剖析器会先将右侧的值转换为对象,然后从转换的对象猎取对应的属性值。总之,解构一个很主要的准绳就是“形式婚配”,依据左边是[]或许{},对右侧举行转换,假如转换后,两侧形式婚配,则举行解构赋值,不然报错。

同时,解构时许可设置默许值,但这里的实行递次是:先解构,假如解构获得的值为非undefined,则变量值=解构的值,默许赋值表达式不实行;只有当解构获得的值严厉即是undefined时,才会实行默许赋值表达式,不然默许赋值表达式是不实行的。

1.数组解构

数组的解构是依据变量的递次举行赋值的,因而变量的值与数组的递次息息相关,差别的递次,解构获得的值也差别。

2.对象解构

对象解构与数组解构差别,对象解构与元素的递次无关,对象解构的主要依据是对象的属性,对象的属性没有序次,变量必需与属性同名,才取到准确的值。

3.函数参数解构

函数参数解构实际上是数组解构或许对象解构的一种运用,在es6中能够为函数参数指定默许值,这点和解构一同运用,关于参数赋值异常有用。函数参数的解构一样请求形式婚配,函数定义时的参数的数据范例和调用时传入的参数范例保持一致。

别的:关于已声明的变量举行解构赋值时,要异常警惕。下面的示例中,首先用let对变量举行了声明,由于let和const声明的变量不能反复声明,在经由过程解构表达式赋值时,javascript剖析器会将行首的{}剖析为代码块,报语法错误。因而在行首加(),将其强迫转化为表达式实行。

4.字符串的解构赋值

字符串也能够举行解构赋值,由于字符串能够转化为一个具有相似数组的对象。

5.数字和布尔值的解构赋值

解构赋值时,假如等号右侧是数值和布尔值,则会先转为对象。解构赋值的规则是,只需等号右侧的值不是对象,就先将其转为对象。由于undefined和null没法转为对象,所以对它们举行解构赋值,都邑报错。

参考文献:http://es6.ruanyifeng.com/#do…

     http://es6.ruanyifeng.com/#do…

    原文作者:hellobaby
    原文地址: https://segmentfault.com/a/1190000018280058
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞