其中默认参数,就是可以在传入数据的时候直接给他一个默认值,例如:
function sum(numbers = 6) {
return numbers.reduce((total, num) => total + num, 0);
}
动态参数是提出的一个特殊的对象arguments,
它用于接受所有的实参,(但是实际的话基本没用,因为他提出的比较早,后来的剩余参数有他全部的功能并且弥补了他的缺陷 不能使用数组方法,因为他是一个类似数组的对象,它并不是一个真正的数组)例如:
function sum() {
return arguments.reduce((total, num) => total + num, 0);
}
sum(1,2,3,4,5,6,7,8,9)
剩余参数:是es6推出...展开运算符中的功能之一,他是可以接受任意数量的参数,并将它们作为一个数组存储在剩余参数中。例如:
function sum(...numbers) {
return numbers.reduce((total, num) => total + num, 0);
}
...的功能还有展开语法它允许你在数组、对象等地方使用 ...
来将数组展开成为独立的元素,或者将对象展开成为独立的属性。例如:
const arr1 = [1, 2, 3];
const arr2 = [0, ...arr1, 4, 5];
// arr2 现在为 [0, 1, 2, 3, 4, 5]
const arr1 = [1, 2, 3];
const arr2 = [...arr1, 0, 4, 5];
// arr2 现在为 [ 1, 2, 3, 0 , 4, 5]
其中他还有一些小细节,比如说:属性覆盖,对象展开语法 { ...obj1, ...obj2 }
中,如果两个对象具有相同的属性名,则后面的对象中的属性会覆盖前面的对象中相同属性名的属性。例如
const obj1 = { a: 1, b: 2 };
const obj2 = { b: 3, c: 4 };
const mergedObj = { ...obj1, ...obj2 };
//输出{ a: 1, b: 3, c: 4 }
在es9中他推出的新功能剩余对象,它允许你在对象字面量中使用 ...
来收集剩余的键值对为一个对象。
const { a, ...rest } = { a: 1, b: 2, c: 3 };
console.log(rest); // 输出 { b: 2, c: 3 }