javascript … 使用场景和含意
在 JavaScript 中,...
(三个点)被称为展开语法(Spread Syntax)或剩余语法(Rest Syntax),具体取决于它的使用上下文。以下是 ...
的不同使用场景和含义:
1. 展开语法(spread stytax)
1.数组展开
用于将一个数组元素展开到另一个数组中
const arr1 = [1, 2, 3];
const arr2 = [...arr1, 4, 5]; // [1, 2, 3, 4, 5]
2. 函数参数的展开
将一个数组的元素作为单独的参数传递给函数。
function myFunction(a, b, c) {
console.log(a, b, c);
}
const args = [1, 2, 3];
myFunction(...args); // 输出 1 2 3
2. 剩余语法(Rest syntax)
在函数定义中,...
用于表示一个函数的不定数量的参数,这些参数被收集到一个数组中。
function myFunction(...args) {
console.log(args); // 输出一个数组
}
myFunction(1, 2, 3); // 输出 [1, 2, 3]
1. 剩余元素
在解构数组时,...
用于收集数组中的剩余元素。
const [first, ...rest] = [1, 2, 3, 4, 5];
// first = 1, rest = [2, 3, 4, 5]
3. 其它场景
1. 字符串展开
虽然不常用,但 ...
也可以用于字符串,将其展开为字符数组。
const str = 'hello';
const chars = [...str]; // ['h', 'e', 'l', 'l', 'o']
2.与 Math.max()
或 Math.min()
结合使用
找到数组中的最大或最小值,无需使用额外的 apply()
方法。
const numbers = [1, 2, 3, 4, 5];
const max = Math.max(...numbers); // 5
const min = Math.min(...numbers); // 1
4.注意事项:
- 展开语法和剩余语法都是 ES6 引入的新特性,所以可能需要在老版本的 JavaScript 环境中使用 Babel 等工具进行转换。
- 展开语法和剩余语法在处理对象时,只会复制对象的可枚举属性,不包括继承的属性和不可枚举的属性。同时,对象的展开不会触发 setters 或 getters。