JavaScript展开运算符的三个妙用

JavaScript 展开运算符的三个妙用

在日常开发中,展开运算符(...)是一个非常实用的语法特性。如果你还没怎么用过它,看完这篇文章或许能帮你打开新思路。

一、合并数组更优雅

过去合并两个数组,我们习惯用 concat,或者写循环。现在一行代码就能搞定:

javascript

ini 复制代码
const arr1 = [1, 2, 3];
const arr2 = [4, 5, 6];
const combined = [...arr1, ...arr2]; // [1,2,3,4,5,6]

你甚至可以在任意位置插入新元素。比如想生成一个新数组,开头放0,中间放arr1,结尾放4,可以写成 [0, ...arr1, 4],非常灵活。相比传统的 concat,展开运算符的写法更加直观,可读性明显提升。

二、复制数组和对象

想快速复制一个数组或对象,又怕修改原数据?展开运算符可以轻松实现浅拷贝:

javascript

ini 复制代码
const original = { name: 'Tom', age: 18 };
const copy = { ...original };

修改 copy 中的基本类型属性不会影响 original。不过需要注意一个细节:如果原对象的某个属性值本身是对象或数组,那么拷贝过来的只是一个引用,内部的修改依然会同步到原对象。这是浅拷贝的特点,在使用时要根据实际情况决定是否改用深拷贝。

三、函数调用替代 apply

以前把数组作为参数传给函数,常用写法是 fn.apply(null, arr)。现在直接用展开运算符,代码会清爽很多:

javascript

ini 复制代码
const nums = [10, 20, 30];
console.log(Math.max(...nums)); // 30

不仅可读性大大提高,还少写了一个 null 参数,不容易出错。类似的,console.log(...['a','b','c']) 也会依次打印三个字符。

总结

展开运算符虽然看起来只是三个小点,但用好了能让代码更干净、更易读。建议大家在合并数组、复制对象、传递参数时优先想到它。如果你是刚接触 ES6 的同学,不妨现在就打开浏览器控制台试一试,几分钟就能上手。第一次发文,如有不足,欢迎评论区指正,互相学习!

相关推荐
小码哥_常2 小时前
一套自己部署的 IM,客户端是同一份 Flutter
前端·后端
蜗牛攻城狮5 小时前
微前端四大方案选型对比与最佳实践:qiankun、micro-app、wujie、Module Federation
前端·微前端·qiankun·前端架构·micro-app·wujie
她说可以呀6 小时前
Vue插槽
前端·javascript·vue.js
qq_448011166 小时前
Vue + Jinja2两套模版与法冲突造成undefinedError
前端·javascript·vue.js
aixingpan7 小时前
aixingpan.cn API开发文档:前端查询夏令时和时区接口指南
前端·php
2601_958352907 小时前
23.5×19mm 换掉一整条音频链?|A-68 集成了什么:ADC / DAC / 24.576MHz 时钟 / AEC / 波束降噪,主控仅需 6 根线
前端·音视频·ai降噪·回声消除·语音模块
志尊宝8 小时前
AI原生前端开发(039):AI辅助的Nuxt 4全栈开发
前端·vue.js·ai-native
FRing039 小时前
JavaScript入门到精通三十二(深拷贝、浅拷贝、递归函数)
开发语言·前端·javascript
excel9 小时前
双 Token 与前端使用 Crypto 公私钥鉴权换 Token,哪种方案更好?
前端·后端
外收内放9 小时前
Python基础语法练习题(73)
java·前端·python