es6常识变量的自动解构和剩余参数

*const声明一个只读的常量。一旦声明,常量的值就不能改变。通常用const定义函数
*let用来定义块级作用域变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。
需要注意:
1) 不管是let还是const,都没有了变量声明的提升;
console.log(m); //报错,没有变量声明的提升;
let m = 100;
2) 不管是let还是const,babel一律翻译为var。

es6常识变量的自动解构和剩余参数_第1张图片
对象的结构往往用在函数的形参列表中,调用函数的时候,传的对象(实参)就能够自动解构。

								function People({name,age,sex,yuwen,shuxue,yingyu}){
										this.name = name;
										this.age = age;
										this.sex = sex;
										this.yuwen = yuwen;
										this.shuxue = shuxue;
										this.yingyu = yingyu;
								}
								var xiaoming = new People({
										"name" : "小明",
										"age" : 12,
										"sex" : "男",
										"yuwen" : 34,
										"shuxue" : 44,
										"yingyu" : 66
								});
								
								console.log(xiaoming);

我们可以在c变量之前加上…运算符,表示c现在接受所有剩余的参数。
需要注意的事情是:…只能出现在最后一项。

var [a,b,...c] = [1,2,3,4,5,6,7];
console.log(a);
console.log(b);
console.log(c);  //[3,4,5,6,7]

在数组前面加上…运算符,表示强制解构。这个数组将变为零散量。
es6常识变量的自动解构和剩余参数_第2张图片

…运算符也可以作用于对象,通常用于一个情况:创建obj1的副本,仅仅改变obj1的某一(些)个属性。

      				var obj1 = {
							"a" : 1,
							"b" : 2,
							"c" : 3
						};						
						var obj2 = {
							...obj1 ,
							"b" : 8
						};						
						console.log(obj2);

在这里插入图片描述
强制解构还可以用于类数组对象,可以将类数组对象变为真的数组:

const fun = function(){
	//下面的语句是一个奇淫技巧,是最快的将类数组对象变为数组的方法
	var arr = [...arguments];
	console.log(arr);		//[ 1, 2, 3, 4, 5, 6, 7, 8 ]
	console.log(Array.isArray(arr)); //true
}
fun(1,2,3,4,5,6,7,8);

你可能感兴趣的:(es6)