展开语法(Spread syntax): 可以在函数调用/数组构造时,将数组表达式或者string在语法层面展开; 还可以在构造字面量对象时, 将对象表达式按key-value的方式展开;
展开运算符的使用场景
在函数调用时使用
const names = ["abc", "nba", "cba", "jjj"]
const str = "Hello"
function foo(name1, name2, ...args){
console.log(name1, name2, args)
}
foo(...names)
将names数组展开作为参数,在调用foo函数的时候使用。
在数组构造时使用
const names = ["abc", "nba", "cba", "jjj"]
const newNames = [...names, "aaa", "bbb"]
console.log(newNames)// ["abc", "nba", "cba", "jjj", "aaa", "bbb"]
将names数组展开作为newNames数组的一部分。
在构建对象字面量的时候,也可以使用展开运算符
const obj = {
name: "weng",
age: 18
}
const info = {
...obj,
friend: "zzp",
address: "sz"
}
这样算是一种浅拷贝。
如何实现深拷贝。
const info3 = JSON.parse(JSON.stringify(obj))