一、数组传值
let arr = ['张飞', '关羽', '赵云', '典韦', '张辽', '貂蝉'];
// 数据解构赋值
let [a, b, c, d, e, f] = ['张飞', '关羽', '赵云', '典韦', '张辽', '貂蝉'];
//a - 张飞
//b - 关羽
//...
console.log( a, b, c, d, e, f );
在赋值的时候是以一一对应的方式
如果变量少(abc)值多(arr())只取对应位置的值
如果变量多(abc)值少(arr())相应变量传一个undefined
1、取得剩余值
let [a, b, ...c] = ['张飞', '关羽', '赵云', '典韦', '张辽', '貂蝉'];
console.log( a, b, c );
也可以在变量前面加(…)三个点取得剩余的值
2、按需取值
let [, a, , , b, ] = ['张飞', '关羽', '赵云', '典韦', '张辽', '貂蝉'];
console.log(a, b);
利用逗号占位取值
3、复杂类型取值
let [, a, , [, b, , c]] = ['张飞', '关羽', '赵云', ['林冲', '鲁智深', '宋江', '武松']]
console.log( a, b, c )
当遇到值中内部还有数组,在变量内添加相应的数组也是根据一一对应的方式取值
二、对象传值
let obj = {
uname : '张三丰',
age : 22,
sex : '男',
score : 99,
index : 3
}
let uname = obj.uname;
let age = obj.age;
let sex = obj.sex;
console.log( uname, age, sex );
//把属性名当做变量名取值既可
1、定义变量取值
let {uname, age, sex, score, index} = {
uname : '张三丰',
age : 22,
sex : '男',
score : 99,
index : 3
}
console.log( uname, age, sex, score, index );
取多少值定义多少变量
2、定义变量取值的同时改变某个值
let uname = '李寻欢';
// 可能在解构赋值之前已经申明了这个变量,
// 这个情况用冒号改变量名
let {uname:userName, sex, aaa} = {
uname : '张三丰',
age : 22,
sex : '男',
score : 99,
index : 3
}
console.log( userName, sex, aaa );
3、另一种对象解构赋值
let obj = {uname : '阿飞', age : 22, sex : '男'};
function fn ({uname, age , sex}) {
// let uname = o.uname;
// let age = o.age;
// let sex = o.sex;
console.log(uname, age , sex);
}
fn(obj)