es6变量的解构赋值:数组

es6允许按照一定模式,从数组和对象中提取值(大部分的解构都是用于二者的,还有一个Set解构),对变量进行赋值,被称为解构

let [a,b,c] = [1,2,3] // 数据解构,位置一一对应,赋予相应的值

若是位置空出来,则不会进行赋值

let [a,b,c,] = [1,2,3,4] // 其中a=1,b=2,c=3,用于遵循位置一一对应的原则
let [head, ...tail] = [1,2,3,4] // head=1 , tail = [2,3,4]  扩展运算符,位置对应,后面的合成一个数组赋值给tail

若没有对应的值,表示解构失败,将会赋值undefined

let [foo] = []; // foo = undefined
let [bar, foo] = [1]; // for = undefined

解构不完全也是遵循位置对应,例如:

let [x, y] = [1, 2, 3];
x // 1
y // 2

let [a, [b], d] = [1, [2, 3], 4];
a // 1
b // 2
d // 4

事实上,只要某种数据结构具有 Iterator 接口,都可以采用数组形式的解构赋值。(暂时看不懂)

function* fibs() {
  let a = 0;
  let b = 1;
  while (true) {
    yield a;
    [a, b] = [b, a + b];
  }
}

let [first, second, third, fourth, fifth, sixth] = fibs();
sixth // 5

在解构的时候是允许指定默认值。

let [foo = true] = []; // 若解构为undefined,将会默认foo为true
let [ foo = true, name = "1"] = [1, 2] // 具备对应的解构值,不会执行默认值 
// null与undefined是不同的
let [x = 1] = [undefined];
x // 1
let [x = 1] = [null];
x // null

// 还可以解构出函数
function f(){
console.log("aaa")
}
let [name = f()] = []  // aaa (打印出aaa)

默认解构值还可以使用前者的默认值,前者必须已经定义,但是前者不能使用后者的定义值

let [x = 1, y = x] = [];     // x=1; y=1
let [x = 1, y = x] = [2];    // x=2; y=2
let [x = 1, y = x] = [1, 2]; // x=1; y=2
let [x = y, y = 1] = [];     // ReferenceError: y is not defined
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在JavaScript中,解构赋值是一种方便的语法,可以将数组或对象中的成员解构出来并赋值变量。对于数组解构,可以使用方括号来指定要解构变量,然后将数组的对应元素赋值给这些变量。例如,如果我们有一个存放了名字和姓氏的数组`arr`,我们可以使用解构赋值数组的元素赋值给对应的变量。\[2\] 在对象解构中,我们可以使用花括号来指定要解构变量,然后将对象的对应属性值赋值给这些变量。例如,如果我们有一个对象`obj`,其中包含`name`和`age`属性,我们可以使用解构赋值将这些属性值赋值给对应的变量。\[1\] 此外,我们还可以将`.entries()`方法与解构语法一同使用,来遍历一个对象的键值对。这个方法返回一个包含对象的键值对的数组,然后我们可以使用解构赋值将键和值分别赋值给对应的变量。\[3\] 希望这个解答对你有帮助! #### 引用[.reference_title] - *1* [解构赋值数组解构、对象解构)](https://blog.csdn.net/qq_50260510/article/details/129927253)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [ES6 --- 解构赋值数组,对象,函数)使用详解](https://blog.csdn.net/m0_52409770/article/details/123096308)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值