展开运算符[...object]

如果只说 展开运算符,可能小伙伴会一脸懵逼,你在说啥啊?

但是如果换成另一种说法:[...object],那么小伙伴可能恍然大悟:“噢~ 你说 ES6 的这个表达式啊!”

  • 原文MDN - 展开语法

  • 功能:展开语法(Spread syntax),可以在函数调用/数组构造时,将数组表达式或者 string 在语法层面展开;还可以在构造字面量对象时,将对象表达式按 key-value 的方式展开。

  • 语法

  1. 函数调用:myFunction(...iterableObj);
  2. 字面量数组构造或字符串:[...iterableObj, '4', ...'hello', 6];
  3. 构造字面量对象时,进行克隆或者属性拷贝(ECMAScript 2018规范新增特性):let objClone = { ...obj };
  • 说明

展开语法和 Object.assign() 行为是一致的,执行的都是浅拷贝(只遍历一层)。如果需要更深层次的拷贝,那么就会出问题。

var arr1 = [1, 2, 3];
var arr2 = [...arr1]; // like arr.slice()
arr2.push(4); 

console.log(arr1); // [ 1, 2, 3 ]
console.log(arr2); // [ 1, 2, 3, 4 ]

当然,展开运算符还有更多的功能,例如连接多个数组:

var arr1 = [0, 1, 2];
var arr2 = [3, 4, 5];
var arr3 = [...arr1, ...arr2];
console.log(arr3); // [ 0, 1, 2, 3, 4, 5 ]

猜你喜欢

转载自blog.csdn.net/weixin_43956521/article/details/111470374
今日推荐