引言:扩展运算符和rest运算符就是为了解决参数未知或者对象数组未知的编程,增强代码的健壮性与简洁
开始学习
1.对象扩展运算符(...)
fun()里面的参数个数未知,这里用(...)标识,arg为参数数组,如下:
function fun(...arg){
console.log(arg[0]);
console.log(arg[1]);
console.log(arg[2]);
console.log(arg[3]);
}
fun(1,2,3);
控制台输出:arg[3]为undefined,说明程序不报错。
此外,给数组对象赋予另外一个数组对象的值时,如下:我们想给arr1的值赋给arr2,但是结果改变arr2时,arr1也跟着改变
let arr1 = ['fit','sed','thd'];
let arr2 = arr1;
console.log(arr2);
arr2.push('fth');
console.log(arr1);
控制台输出:
这种方式,arr1只是将自己的内存地址赋给arr2,也就是arr1映射到了arr2,系统并没有给arr2开辟新的内存空间,可以用扩展运算符来做,正确写法如下:
let arr1 = ['fit','sed','thd'];
//let arr2 = arr1;
let arr2 = [...arr1]; //应该这么写,表示的是将arr1里面的值赋给arr2,而不是地址
console.log(arr2);
arr2.push('fth');
console.log(arr1);
控制台输出:
2.rest运算符(...)
上例子:
function fun(first,...arg){
console.log(arg.length);
}
fun(0,1,2,3,4,5,6,7);
控制台输出:
因为第一个参数是确定的,所以长度里面是不包括第一个的,也就是说:总参数-已知参数
不信我们可以打印出来参数值
function fun(first,...arg){
for(let val of arg){
console.log(val);
}
}
fun(0,1,2,3,4,5,6,7);
控制台输出:
可以看出,0是不输出来的。
以上就是扩展运算符和rest运算符