JavaScript展开运算符(…)用于将可迭代对象(如数组、字符串、Set等)展开为独立元素,在函数调用中替代apply(),支持与普通参数混合使用,但必须位于实参列表末尾。

JavaScript 展开运算符(Spread Operator)是三个英文句点 …,它能把可迭代对象(如数组、字符串、类数组对象)或对象“展开”成独立的元素。在函数调用中,它的核心作用是**把一个数组或类数组结构“打平”,作为多个独立参数传给函数**,替代了过去常用的 apply() 方法。
让数组变成多个参数
以前调用函数时,如果参数已经存在数组里,得这样写:
Math.max.apply(null, [1, 5, 3]) // 5
现在用展开运算符更直观:
Math.max(…[1, 5, 3]) // 5
它等价于 Math.max(1, 5, 3),数组被“拆开”,每个元素变成一个实参。
立即学习“Java免费学习笔记(深入)”;
可以和其他参数混合使用
展开运算符不一定要独占全部参数,可以和普通参数、其他展开表达式组合:
myFunc('a', ...arr, 'z') —— 开头一个固定值,中间展开数组,结尾再加一个值 console.log(...[1, 2], ...[3, 4]) → 输出 1 2 3 4 但注意:展开运算符只能出现在**实参列表的最后位置**(除非是解构赋值场景,那是另一回事)
适用于任何可迭代对象
不只是数组,只要是实现了迭代协议的对象都可以展开:
console.log(...'hi') // h i(字符串逐字符展开) console.log(...new Set([1, 2, 2])) // 1 2(自动去重后展开) console.log(...document.querySelectorAll('div')) 可直接传给函数处理 DOM 节点列表
不能用于普通对象(除非在对象字面量中)
单独对普通对象使用展开运算符会报错:
myFunc({…obj}) // ❌ 错误:对象不可迭代(在函数调用中)
但这是常见误解——在函数调用中,… 只能作用于可迭代值;而 {...obj} 是对象展开,只在对象字面量或解构中合法,和函数调用无关。
以上就是javascript展开运算符是什么_它在函数调用中有什么作用的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1544608.html
微信扫一扫
支付宝扫一扫