结构赋值
按照一个数据值的结构,快速解析获取到其中到内容
- 1、真实项目中一般都是针对于数组或者对象进行结构赋值
let ary = [12,23,34]
/*
let a = ary[0],
b = ary[1],
c = ary[2]
*/
let [a,b,c]=ary;
//让等号左边出现和右边相同到数据结构,左边可以创建一些变量快速获取到右侧对应位置的值(结构赋值)
console.log(a,b,c)
let [a] = ary; // 12
let [, , c] = ary; //34
let [a, , c] = ary ; //12 34
//需求 :获取第一项,把剩下的项作为一个数组返回
let [a,...b]=ary
// a=12 b=[23,34]
// ... 在此处称为剩余运算符,:除了前面以外的项,都放在一个数组中
let [a,..b,c]=ary
//报错 剩余运算符处于结构中最后的位置
let ary = [12];
let [a,b=0] = ary;
// 在结构的时候可以给变量设置默认值;如果当前变量对应结构总的这一项没有值,变量用默认值
console.log(a,b) // 12 0
- 2、对象的结构赋值
let obj ={name:"xiaoming",age:18,sex:0}
let {name,age,sex}=obj //对象结构赋值默认情况下要求:左侧变量名和对象中的属性名一致才可以
// "xiaoming" 18 0
let {sex} = ary;
// 0
let {age:ageAA} = obj;
congsole.log(age) //报错
console.log(ageAA) //18 给结构的属性名起别名作为我们使用的变量
let {friedn = 0} = obj
console.log{friend} //0 给不存在的属性设置默认值
let value = {name:"xxx",age:25,score:[12,23,34,45]}
// 需求 a="xxx" b=12 c=[23,34,45]
let {name:a,score:[b,...c]} = value
console.log(a,b,c) //a="xxx" b=12 c=[23,34,45]
…
在ES6语法中,三个点有三种含义
1、剩余运算符
2、拓展运算符
2、展开运算符:把数组/对象/类数组中的每一项展开
//剩余运算符
let ary = [12,23,34]
let [...arg] = ary // ary.slice(0) 数组克隆
function fn(context,...arg){
// 获取传递值中的第一个和剩下的
// argument 是类数组 不能直接调用数组方法
console.log(context) // obj
console.log(...arg) // 10,20,30,40
}
let obj={}
fn(obj,10,20,30,40);
function sum (...arg){
// 传递几个石蚕,arg中就有几个,此时的arg和argument是一样的
}
//展开运算符
let ary = [12,23,34]
Math.max(...ary)
// 相当于 Math.max(12,23,34)
// 34
let fn = function(a,b,c){
console.log(a,b,c)
}
fn(ary) // a:ary b c undefined
fn(...ary) // a:12 b:23, c:34
//把数组中的每一项分别传递给一个函数,此时我们是用展开运算符把数组展开即可
let obj = {name:"xxx",age:10}
let newObj = {...obj,sex:0}
//{name:"xxx",age:10,sex:0} 把原有对象展开(克隆)放到新对象中