怎么判断...是展开符号还是rest参数
时间: 2024-03-06 22:51:49 浏览: 9
在语法上,展开符号和 rest 参数都使用 `...` 符号。但是它们的使用场景不同,可以通过上下文来判断 `...` 是展开符号还是 rest 参数。
如果 `...` 符号出现在函数定义时,它就是 rest 参数,用于将所有传递给函数的参数转换成一个数组。例如:
```
function sum(...numbers) {
return numbers.reduce((acc, curr) => acc + curr);
}
```
在这个例子中,`...numbers` 就是 rest 参数,用于将所有传递给 `sum` 函数的参数转换成一个数组。
如果 `...` 符号出现在数组或对象前面,它就是展开符号,用于将数组或对象展开成多个独立的元素。例如:
```
const numbers = [1, 2, 3];
console.log(...numbers); // 输出 1 2 3
const person = { name: 'Alice', age: 30 };
const newPerson = { ...person, age: 31 };
console.log(newPerson); // 输出 { name: 'Alice', age: 31 }
```
在这个例子中,`...numbers` 和 `{ ...person }` 都是展开符号,用于将数组或对象展开成多个独立的元素。
因此,我们可以通过上下文来判断 `...` 是展开符号还是 rest 参数。如果它出现在函数定义时,它就是 rest 参数;如果它出现在数组或对象前面,它就是展开符号。