es6 三点运算符_ES6/ES7 三点式 —— 扩展运算符与剩余操作符

本文介绍了ES6中的扩展运算符,它允许我们将数组或对象的值展开,简化代码。扩展运算符可用于复制数组、合并数组、类数组对象转换以及在函数调用中替代apply方法。此外,还提到了与剩余操作符的区别,并通过实例展示了如何在React组件封装中使用扩展运算符。
摘要由CSDN通过智能技术生成

ES6 标准提供给 JavaScript 开发者许多简化代码的新特性,今天要介绍的扩展运算符就是非常常用的一种。可以使你的代码更加简洁优雅。

扩展运算符

扩展运算符以三个点的形式出现 ... 可以将数组或者对象里面的值展开。

const a = [1, 2, 3]

console.log(a) // 1 2 3

const b = {a: 1, b: 2}

console.log({c: 3, ...b}) // {a: 1, b: 2, c: 3}

扩展运算符的应用

接下来看看扩展运算符的常见应用。

1.复制数组和复制对象

const a = [1, 2, 3]

const b = [...a]

// 相当于 b = a.slice()

console.log(a) // [1, 2, 3]

console.log(b) // [1, 2, 3]

console.log(a === b) // false

const a = {a: 1, b: 2}

const b = {...a}

console.log(a) // {a: 1, b: 2}

console.log(b) // {a: 1, b: 2}

console.log(a === b) // false

// 相当于 const b = Object.assign({}, a)

要注意复制时候只会进行浅复制。

2.合并数组和合并对象

const a = [1, 2, 3]

const b = [4, 5]

console.log([...a, ...b]) // [1, 2, 3, 4, 5]

// 相当于 a.concat(b)

const a = {a: 1, b: 2}

const b = {b: 3, c: 4}

console.log({...a, ...b, c: 5}) // {a: 1, b: 3, c: 5}

// 相当于 Object.assign(a, b, {c: 5})

3.类数组对象数组化

前端开发当中经常会遇到一些类数组对象,如:function 的 arguments,document.querySelectorAll 等,通常会将这些类数组对象转换为数组的形式使其可以利用数组原型对象的方法。

const divs = document.querySelectorAll('divs')

// divs.push 会报错

// slice 方式

divs = [].slice.call(divs)

// 使用扩展运算符

divs = [...divs]

4.代替 apply 方法

function sum(x, y, z) {

console.log(x + y + z)

}

const args = [1, 2, 3]

// apply 方式

fn.apply(null, args)

// 扩展运算符方式

fn(...args)

剩余操作符

另外一种以三个点 ... 形式出现的是剩余操作符,与扩展操作符相反,剩余操作符将多个值收集为一个变量,而扩展操作符是将一个数组扩展成多个值。

// 配合 ES6 解构的新特性

const [a, ...b] = [1, 2, 3]

console.log(a) // 1

console.log(b) // [2, 3]

最后再看一个例子,在日常开发当中非常常见,而且同时利用到扩展操作符和剩余操作符,在 React 开发当中常常会利用一些组件库,为了业务需要我们会将一些组件库提供的组件封装成业务组件方便开发。

import { Button } from 'antd' // 组件库提供的组件

function MyButton({ isDanger, children, ...others }) {

return (

{isDanger ?

{children} :

{children}

}

)

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值