数组的解构赋值
解构赋值遵循模式匹配原则。
下面看例子:
let [a, b] = [1, 2] // 基础用法
let [a, b] = [1, [2, 3]] // b = [2, 3],模式匹配
let [a, [b]] = [1, [2]] // b = 2,模式匹配
let [a, ...b] = [1, 2, 3] // b = [2, 3],残余全接收,行为与函数rest参数一致
let [a] = [1, 2] // a = 1,冗余
let [a, , c] = [1, 2, 3] // a = 1, c = 3,丢弃写法,不像python需要_占位
let [x, y = 'd'] = ['a'] // x = 'a', y = 'd',指定默认值
[a, b] = [b, a] // 可以用于交换变量
对象的解构赋值
按键解构,如果键不同名需要指定别名。该特性也让我们可以方便地从函数返回多个值,或提取JSON解析结果。
下面看例子:
let { a, b } = {a: 1, b: 2} // a = 1, b = 2
let { b, a } = {a: 1, b: 2} // a = 1, b = 2
let { b: c, a } = {a: 1, b: 2} // a = 1, c = 2,注意b、c的顺序与直觉相反
let { c } = {a: 1} // c = undefined,这是易于理解的
let { x = 3 } = { } // x = 3,应用默认值的条件是===undefined
let { length } = 'hello' // length = 5,这是因为字符串对象有length属性
let { x } = undefined // or null,导致TypeError
更多
我们在这里只讨论了最常见的两种解构赋值的用法。实际上,解构赋值的形式是多样的,用处是大的。当掌握了这两种解构赋值的基础后,自然而然会在编码中用到各种形式的解构赋值,无需特别讨论。
原文地址:https://www.cnblogs.com/zxuuu/p/12864045.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。