
动态参数

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><script>function getSum() {// arguments 动态参数 只存在于函数内部// 是伪数组let sum = 0for (let i = 0; i < arguments.length; i++) {sum += arguments[i]}console.log(sum)}getSum(2, 3, 4)getSum(1, 2, 3, 4, 5, 6, 7, 8, 9)</script>
</body></html>
剩余参数

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><script>// 这里指定了两个形参,...arr就只会捕获两个数之后的元素了function getSum(a, b, ...arr) {console.log(arr)}getSum(2, 3)getSum(1, 2, 3, 4, 5)</script>
</body></html>
两者区别

(最大差别在真伪数组上)
展开运算符

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><script>const arr1 = [1, 2, 3]const arr2 = [4, 5, 6, 7, 8]//展开运算符 可以展开数组arr1 = 1, 2, 3// 1.求数组的最大值console.log(Math.max(...arr1))//3console.log(Math.max(...arr2))//8// 2.合并数组const arr = [...arr1, ...arr2]console.log(arr)//12345678</script>
</body></html>
展开运算符和剩余运算符的符号相近
前者在数组中运用
后者只能在函数内部使用
