es6 扩展运算符和rest运算符

对象扩展运算符(…):

当编写一个方法时,我们允许它传入的参数是不确定的。这时候可以使用对象扩展运算符来作参数,看一个简单的列子:

function leiy(...arg){
 console.log(arg[0]);
 console.log(arg[1]);
 console.log(arg[2]);
}
leiy(1,2,3)

打印结果:

1
2
3

扩展运算符的用处:

我们先用一个例子说明,我们声明两个数组arr1和arr2,然后我们把arr1赋值给arr2,然后我们改变arr2的值,你会发现arr1的值也改变了,因为我们这是对内存堆栈的引用,而不是真正的赋值。

let arr1=['aa','bb','cc'];
let arr2=arr1;
console.log(arr2);
arr2.push('dd');
console.log(arr1);

打印结果:

['aa','bb','cc']
['aa','bb','cc', "dd"]

这是我们不想看到的,可以利用对象扩展运算符简单的解决这个问题,现在我们对代码进行改造。

let arr1=['aa','bb','cc']
let arr2=[...arr1]
console.log(arr2);
arr2.push('dd')
console.log(arr1);
console.log(arr2);

打印结果:

[ 'aa', 'bb', 'cc' ]
[ 'aa', 'bb', 'cc' ]
[ 'aa', 'bb', 'cc', 'dd' ]

现在控制台预览时,你可以看到我们的arr1并没有改变,简单的扩展运算符就解决了这个问题

rest运算符

function leiy(first,...arg){
	for(let val of arg){
		console.log(val);
	}
}
leiy(0,1,2,3,4,5,6,7)
function aa(...arg){
	for(let val of arg ){
		console.log(val);
	}
}
aa('a','b','c','d','e','f')

打印结果:

1
2
3
4
5
6
7
a
b
c
d
e

f

提倡大家以后多用for..of 循环



猜你喜欢

转载自blog.csdn.net/weixin_41013537/article/details/80248936
今日推荐