ES6 新特性

ES6 rest参数和扩展运算符

2022-05-06  本文已影响0人  生命里那束光

一、rest参数

ES6 引入 rest 参数,用于获取函数的实参,用来代替 arguments

1. ES5 获取实参的方式

function date() {
    console.log(arguments);
}
date('白芷', '阿娇', '思慧');

2. ES6 获取实参的方式

//rest 参数
function date(...args) {
    console.log(args);// filter some every map 
}
date('阿娇', '柏芝', '思慧');
function fn(a, b, ...args) {
    console.log(a);
    console.log(b);
    console.log(args);
}
fn(1, 2, 3, 4, 5, 6);

二、扩展运算符

  • 扩展运算符好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列。
  • 扩展运算符在给数组、对象拼接很常用,原有的属性保存,新增的属性添加进去。

1. 数组的合并

//数组1
const kuaizi = ['王太利', '肖央'];
//数组2
const fenghuang = ['曾毅', '玲花'];

//ES5concat方法-数组拼接
const zuixuanxiaopingguo = kuaizi.concat(fenghuang);
//ES6扩展运算符-数组拼接
const zuixuanxiaopingguo = [...kuaizi, ...fenghuang];

//打印拼接后的新数组
console.log(zuixuanxiaopingguo);

2. 数组的克隆

这样拷贝如果原数组里的元素有引用类型的,那这样也只是把里面元素进行浅拷贝

//数组1
const sanzhihua = ['E', 'G', 'M'];

//定义数组2,通过扩展运算符克隆数组1
const sanyecao = [...sanzhihua];//  ['E','G','M']
//打印数组2
console.log(sanyecao);
  • 浅拷贝:就是浅拷贝只复制指向某个对象的指针,而不复制对象本身,新旧对象还是共享同一块内存。
  • 深拷贝:是直接整个新对象出来并且把原来对象的数据放进去。改变拷贝数组也会改变原数组

3.将伪数组转为真正的数组

<div></div>
<div></div>
<div></div>

<script>
    //获取所有div元素
    const divs = document.querySelectorAll('div');
    //使用扩展运算符转化伪数组
    const divArr = [...divs];
    //打印转化后的数组
    console.log(divArr);
</script>
上一篇下一篇

猜你喜欢

热点阅读