(精华)2020年6月29日 JavaScript高级篇 ES6(解构赋值)
【摘要】
解构赋值
1.1. 数组解构赋值
// 通过数组对变量进行赋值
let arr = [1,2,3]
console.log(arr[0]);
console.log(a...
解构赋值
1.1. 数组解构赋值
// 通过数组对变量进行赋值
let arr = [1,2,3]
console.log(arr[0]);
console.log(arr[1]);
console.log(arr[2]);
let [a,b,c] = [1,2,3]
console.log(a);
console.log(b);
console.log(c);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
1.1.1. 模式匹配
等号两边的模式相同 左边的变量就会被赋予对应的值
let [a,[[b],c]] = [1,[[2],3]]
console.log(a);
console.log(b);
console.log(c);
- 1
- 2
- 3
- 4
1.1.2. 不完全解构
// 不完全解构
let [x,y,u] = [1,2,3,4]
console.log(x);
console.log(y);
console.log(u);
- 1
- 2
- 3
- 4
- 5
1.1.3. 嵌套模式
let [a,[[b],c]] = [1,[[2],3]]
console.log(a);
console.log(b);
console.log(c);
- 1
- 2
- 3
- 4
1.1.4. 默认值
// 指定默认值
let [f = true] = []
console.log(f);
let [a,b="y"] = ['a']
console.log(b);
// 注意点 es6内部使用 === 判断是否是undefined 如果是undefined 默认值才会生效
let [x = 1] = [null]
let [y = 2] = [undefined]
console.log(x); // null
console.log(y); // 2
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
1.1.4.1. 惰性求值
// 惰性求值
function f(){
return 'fff'
}
// let [x = f()] = [1]
let [x = f()] = []
console.log(x);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
1.1.4.2. 默认值可以引用解构赋值的其他变量
// 默认值可以引用解构赋值的其它变量 前提是变量必须已经声明
// let [x= 1,y=x] = []
// console.log(x); // 1
// console.log(y);
// let [x = y,y=1] = [] // 从左往右
// let [y = 1 , x = y] = []
// console.log(x);
// console.log(y);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
2. 对象解构赋值
2.1. 定义用法注意点
let person = {
name:"chris",
age:33
}
// let {name,age} = person;
// 注意:对象的解构和数组不一样 和顺序无关
let {age:age,name:name} = person;
console.log(name);
console.log(age);
let {sex} = person;
console.log(sex); // 解构不成功会返回undefined
// 真正被赋值的是后者 对象解构赋值的实质
// 会先找到同名的属性 赋值给后者的变量
let {name:name1} = person
console.log(name1);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
2.2. 可以取到继承的属性
const obj1 = {};
const obj2 = {name:'laney'}
Object.setPrototypeOf(obj1,obj2)
// obj1.__proto__ = obj2
const {name} = obj1;
console.log(name);
- 1
- 2
- 3
- 4
- 5
- 6
2.3. 指定默认值
// 默认值的生效条件 对象属性的值 严格 === undefined
const {x = 1} = {x:undefined}
const {y = 3} = {y:null}
console.log(x);
console.log(y);
- 1
- 2
- 3
- 4
- 5
文章来源: codeboy.blog.csdn.net,作者:愚公搬代码,版权归原作者所有,如需转载,请联系作者。
原文链接:codeboy.blog.csdn.net/article/details/107029498
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)