这是我参与更文挑战的第 13 天,活动详情查看: 更文挑战
扩展操作符(...)可在函数调用/数组构造时, 将数组表达式或者string在语法层面展开; 还以在构造对象时, 将对象表达式按key-value的方式展开;
1. 数组
1.1 构造数组 没有扩展运算符的时候,只能组合使用 push,splice,concat 等方法,将已有数组元素变成新数组的一部分。 有了扩展运算符, 构造新数组会变得更简单、更优雅: 扩展运算符(spread)就是我们知道的三个点(...),它就好像 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列。
1.2 数组拷贝 展开语法和 Object.assign() 行为一致, 执行的都是浅拷贝
1.3 合并数组 本质:将一个数组转为用逗号分隔的参数序列,然后置于数组中
2. 对象
扩展运算符(...)用于取出 参数对象 所有 可遍历属性 然后拷贝到当前对象。 2.1 克隆对象 当 String,Number,Boolean 时,属于深拷贝; 当 Object,Array时,属于浅拷贝;
2.2 合并对象
注意: 自定义的属性在拓展运算符后面,则拓展运算符对象内部同名的属性将被覆盖掉; 自定义的属性在拓展运算度前面,则自定义的属性将被覆盖掉;
扩展运算符后面是空对象、null、undefined,没有任何效果也不会报错。
3. 函数
函数调用中,扩展运算符(...)将一个数组,变为参数序列
扩展运算符与的函数参数可以结合使用,非常灵活:
4. 在 react 中的运用
通常我们在封装一个组件时,会对外公开一些 props 用于实现功能,大部分情况下在外部使用都应显示的传递 props , 但是当传递大量的props时,会非常繁琐,这时我们可以使用 ...(扩展操作符,用于取出参数对象的所有可遍历属性) 来进行传递。
之前的写法:
使用 ... ,等同于上面的写法
配合解构赋值避免传入一些不需要的参数
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/3327.html