登录
首页 >  文章 >  前端

JavaScript扩展运算符是什么?怎么用?

时间:2026-01-29 13:37:42 256浏览 收藏

珍惜时间,勤奋学习!今天给大家带来《JavaScript扩展运算符是什么?用途有哪些》,正文内容主要涉及到等等,如果你正在学习文章,或者是对文章有疑问,欢迎大家关注我!后面我会持续更新相关内容的,希望都能帮到正在学习的大家!

javascript中的扩展运算符是什么_它有什么用途

扩展运算符 ... 是什么

它不是函数也不是方法,而是一种语法糖,用于把可迭代对象(如数组、字符串、类数组)或对象“展开”成独立的元素。本质是把一个整体“打散”,让内部项能被直接使用。

数组中用 ... 合并或浅拷贝

常见于合并多个数组、给函数传参、快速复制数组。注意:只做一层浅拷贝,嵌套数组/对象仍共享引用。

  • 合并数组:[...arr1, ...arr2]
  • 函数调用传参:Math.max(...numbers),比 Math.max.apply(null, numbers) 更直观
  • 浅拷贝:const newArr = [...oldArr],比 oldArr.slice()Array.from(oldArr) 更简洁
  • 错误用法:[...null][...undefined] 会直接报错 TypeError: null is not iterable

对象中用 ... 解构与合并

只能用于对象字面量中,且必须在最后一个位置;用于提取已有属性或合并多个对象。不能像数组那样用在函数参数里(那是剩余参数,语法相同但语义不同)。

  • 合并对象:{ ...obj1, ...obj2 },后者属性覆盖前者(同名 key)
  • 提取部分属性:const { a, b, ...rest } = objrest 是不含 ab 的新对象
  • 注意顺序:{ ...obj1, x: 1, ...obj2 } 中,obj2 会覆盖 x: 1,因为后写的生效
  • 不能展开 nullundefined{ ...null } 报错 TypeError: Cannot spread non-iterable null

和剩余参数 ... 容易混淆的点

写法一样,但出现位置和作用完全不同:扩展运算符在「等号右侧」或「函数调用时」,用于展开;剩余参数在「函数参数列表末尾」或「解构左侧」,用于收集成数组。

  • 扩展:fn(...arr)[...arr]{...obj}
  • 剩余:function fn(a, b, ...rest) {}const [a, b, ...rest] = arr
  • 同一行里可能共存:const [first, ...others] = [...arr] —— 右边是扩展,左边是剩余
  • 剩余参数不支持对象解构:const { a, ...rest } = obj 合法,但 function fn({ a, ...rest }) {} 会语法报错
const arr = [1, 2];
console.log(...arr); // 1 2
console.log([...arr, 3]); // [1, 2, 3]

const obj = { a: 1, b: 2 };
console.log({ ...obj, c: 3 }); // { a: 1, b: 2, c: 3 }
const { a, ...rest } = obj;
console.log(rest); // { b: 2 }
真正容易出问题的地方不在语法,而在误以为 ... 能深拷贝、能展开非可迭代值、或混淆它和剩余参数的上下文。写之前先看清楚它在等号哪一边、在函数定义还是调用里。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于文章的相关知识,也可关注golang学习网公众号。

前往漫画官网入口并下载 ➜
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>