浅理解扩展运算符 ... 的使用
扩展 理解 ... 运算符 使用
2023-09-11 14:15:12 时间
📋前言
在 ES6(ECMAScript 2015)中,新增了扩展语法(Spread Syntax)运算符 …,也称作展开运算符。这个运算符可以让我们更方便地操作数组、对象和函数参数等多种数据类型。
🎯扩展运算符用法
扩展语法运算符 … 有多种用法,包括:
1️⃣数组的展开:将一个数组“打散”为单个元素。
const arr = [1, 2, 3];
console.log(...arr); // 1 2 3
// 数组解构赋值
const arr = [1, 2, 3];
const [a, ...rest] = arr; // a = 1, rest = [2, 3]
console.log(arr);
2️⃣数组的合并:将多个数组合并成一个新的数组。
const arr1 = [1, 2];
const arr2 = [3, 4];
const combinedArr = [...arr1, ...arr2];
console.log(combinedArr); // [1, 2, 3, 4]
3️⃣对象的展开:将一个对象“打散”为单个属性。
const obj = {a: 1, b: 2};
console.log({...obj}); // {a: 1, b: 2}
// 对象解构赋值
const obj = {a: 1, b: 2, c: 3};
const {a, ...rest} = obj; // a = 1, rest = {b: 2, c: 3}
console.log(obj);
4️⃣函数参数的传递:将一个数组或对象作为参数传递给函数。
function myFunc(a, b, c) {
console.log(a, b, c);
}
const arr = [1, 2, 3];
myFunc(...arr); // 1 2 3
5️⃣补充:在标签模板中,… 通常用于将模板字符串中所有的表达式值作为一个数组传递给函数的第二个参数。例如:
function myTag(strings, ...values) {
console.log(strings);
console.log(values);
}
const name = '张三';
const age = 18;
myTag`我叫${name},今年${age}岁。`;
在上面的例子中,模板字符串中含有两个表达式 ${name} 和 ${age},… 将其作为一个数组 [name, age] 传递给了 myTag 函数的第二个参数 values,以方便我们对它们进行处理。
🎯扩展运算符的优点
使用扩展运算符 … 可以让代码更简洁、更易读、更易维护。例如,当我们需要在数组中添加元素时,传统的写法可能是这样的:
const arr = [1, 2, 3];
arr.push(4);
arr.push(5);
console.log(arr); // [1, 2, 3, 4, 5]
而使用扩展运算符的写法则可以更加简洁:
const arr1 = [1, 2, 3];
const arr2 = [4, 5];
const combinedArr = [...arr1, ...arr2];
console.log(combinedArr); // [1, 2, 3, 4, 5]
同样,在函数调用时,使用扩展运算符可以让代码更加简洁明了:
function myFunc(a, b, c) {
console.log(a, b, c);
}
const arr = [1, 2, 3];
myFunc(...arr); // 1 2 3
📝最后
扩展语法运算符 … 是 ES6 中一个非常实用的功能,它可以帮助我们更方便地操作数组、对象和函数参数等多种数据类型。在 JavaScript 开发中,我们经常会遇到需要“打散”数组、合并多个数组、传递数组或对象参数等问题,这时使用扩展运算符就可以让代码更加简洁、易读、易维护,提高开发效率。
相关文章
- 【C#】对异步请求处理程序IHttpAsyncHandler的理解和分享一个易用性封装 【手记】走近科学之为什么明明实现了IEnumerable<T>的类型却不能调用LINQ扩展方法 【手记】手机网页弹出层后屏蔽底层的滑动响应 【手记】ASP.NET提示“未能创建类型”处理 【Web】一个非常简单的移动web消息框 【手记】解决EXCEL跑SQL遇“查询无法运行或数据库表无法打开...”
- PHP SOAP 扩展 Web Service 例子
- OSG相关扩展工程
- 让 Linux 桌面焕然一新的 7 个扩展坞
- 使用Jenkins扩展钉钉消息通知
- Linux有问必答:如何扩展XFS文件系统
- [UWP]理解及扩展Expander
- PHP 使用 mcrypt 扩展中的 mcrypt_encrypt() 和 mcrypt_decrypt() 对数据进行加密和解密
- 详解Layer 2扩展解决方案Optimism(OP)是如何工作的?|Tokenview
- ES6新特性:Function函数扩展, 扩展到看不懂
- gnuc对c的扩展
- centos7上安装redis以及PHP安装redis扩展(二)
- ora-01652无法通过128(在表空间temp中)扩展temp段
- 【ES11(2020)】Promise 扩展 allSettled()
- 为Python编写一个简单的C语言扩展模块
- Selenium_Selenium WebDriver 中鼠标和键盘事件分析及扩展
- 深入理解Spring源码之IOC 扩展原理BeanFactoryPostProcessor和事件监听ApplicationListener
- 框架使用的技术主要是SpringMVC 在此基础上进行扩展
- IT平台扩展到Interxion的伦敦数据中心