…rest和…spread
...rest:将所有剩余的参数(’其余的参数‘)收集到一个数组中
...spread:将迭代器张开为一个或多个参数
rest:
注意:rest必须是唯一参数或是最后一个参数,不可以是第一个
spread:
注意:spread可以在任何位置使用
Example:
function sum(...args){
console.log(args)
}
sum(1,2,3) //[1,2,3]
//如果传入一个数组
sum([1,2,3]) //[[1,2,3]]
//使用spraed 来扁平化数组
sum(...[1,2,3]) //[1,2,3]
Data deconstruction
//数组解构
[a,b]=[10,20]
//默认关键字var
[a] = [2]
//let定义不可以作为window对象
let [a] =[2]
console.log(window.a) //undefined
//使用 ...rest解构
[a,...rest] = [30,40,50]
console.log(rest) //[40,50]
//直接从对象内部属性中提取
let deep ={
fruit:{
name:"zhangsan"
ages:20
}
}
let {
name ,ages} = deep.fruit //name:zhangsan ages:20
//解构与重命名同时
let {
auto : car } = {
auto : 'zhangsan'}
console.log(auto) //错误defined
console.log(car) //zhangsan
//使用spread合并对象,不仅仅是浅复制,也可以复制嵌套属性
let a = {
p:1 ,m:()=>{
} , nest :{
nest:eggs:10}}
let b = {
r:3 , n:()=>{
}}
let c = {
...a ,...b}
//{ p: 1, m: () => { }, nest: { nest: { eggs: 10 } }, r: 3, n: () => { } }
使用spread合并数组
let a = [1,2]
let b = [3,4]
let c = [...a,...b] //[1,2,3,4]