解构运算符
个人理解:就是将整个数组或者对象 传给一个载体,或对象,或函数,那么只需要定义接收者就行了,载体的接收者会自动为期赋值。
解构运算符---用来赋值
//数组类型的 let arr = ['hello', 1, 2]; let [a, b, c] = arr; console.log(a);//hello console.log(b);//1 console.log(c);//2 //对象类型的 let obj = { name: 'MrD', age: 26, son: { sonname: '大熊', sonage: 1 } }; let {name, sex, age, son} = obj; console.log(name ,sex ,age); //MrD console.log(son); // { sonname: '大熊', sonage: 1 }
解构运算符---用来传参
//数组类型的 let arr = ['hello', 1, 2]; //方法 fn1([a, b, c]) { console.log(a); console.log(b); console.log(c); } //对象类型的 let obj = { name: 'MrD', age: 26, son: { sonname: '大熊', sonage: 1 } }; //方法 fn2({a, b, c}) { console.log(a); console.log(b); console.log(c); }
扩展运算符
扩展运算符用三个点号表示,功能是把数组(或类数组对象)展开成一系列用逗号隔开的值
//方法 fn([a, b, c]) { console.log(a); console.log(b); console.log(c); } //数组类型的 let arr = ['hello', 1, 2]; fn(...arr)
rest运算符
rest运算符也是三个点号,不过其功能与扩展运算符恰好相反,把逗号隔开的值序列组合成一个数组
//方法 fn(...args) { //主要用于不定参数,所以ES6开始可以不再使用arguments对象 for (let el of args) { console.log(el); } } fn('hello', 1, 2)