前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >项目中关于解构的常用用法

项目中关于解构的常用用法

作者头像
前端小智@大迁世界
发布2022-06-14 16:09:16
3310
发布2022-06-14 16:09:16
举报
文章被收录于专栏:终身学习者终身学习者

作者:Ruphaa 译者:前端小智 来源:dev

本文 GitHub https://github.com/qq449245884/xiaozhi 已收录,有一线大厂面试完整考点、资料以及我的系列文章。

在本文串,你将学到所有你需要知道的 JS 解构知识点。

为什么 JS 中存在解构?

这是一个普通的对象,包含4个人的名字。

代码语言:javascript
复制
const names = {
    taylor: '小智',
    shawn: '前端小智',
    zayn: '大志',
    halsey: '王大志',
}

现在,如果让你手动打印所有人名到控制台,你会怎么做。可能会这样做:

代码语言:javascript
复制
console.log(names.taylor)
console.log(names.shawn)
console.log(names.zayn)
console.log(names.halsey)

这种的方式有点烦人,怎样才能让它变得更好?

代码语言:javascript
复制
const taylor = names.taylor
const shawn = names.shawn
const zayn = names.zayn
const halsey = names.halsey

console.log(taylor)
console.log(shawn)
console.log(zayn)
console.log(halsey)

好多了。但我们仍然在重复同样的工作。如果我们可以在单个变量上声明和分配对象属性呢?

这样会更好,对吧?这就是对象解构帮助我们的地方。所以我们可以这样做:

代码语言:javascript
复制
const { taylor, shawn, zayn, halsey} = names

console.log(taylor)
console.log(shawn)
console.log(zayn)
console.log(halsey)

这比以前好多了。

它是如何工作的呢?

这很简单。我们只是从对象中取出属性并将它们存储在一个变量中。默认情况下,变量名与属性名相同。所以我们可以这样写:

代码语言:javascript
复制
const { taylor, shawn, zayn: zaynMalik, halsey} = names

数组解构?

数组解构与对象的解构类似,但有一些区别。我们知道数据被存储在一个带有索引的数组中。它们是有顺序的。因此,在进行解构时,我们必须保持顺序。比如:

代码语言:javascript
复制
const albums = ['Lover', 'Evermore', 'Red', 'Fearless']

const [lover, ever] = albums
// Lover Evermore

而且,数组也没有值的属性。所以,可以直接给出你想要的任何变量名称。

我们继续看看对象和数组解构的一些用例。

数组解构

交换变量
代码语言:javascript
复制
let a = 1;
let b = 3;

[a, b] = [b, a];
console.log(a); // 3
console.log(b); // 1
忽略一些返回值
代码语言:javascript
复制
function f() {
  return [1, 2, 3];
}

const [a, , b] = f();
console.log(a); // 1
console.log(b); // 3
默认值
代码语言:javascript
复制
let a, b;

[a=5, b=7] = [1];
console.log(a); // 1
console.log(b); // 7
用 Rest 参数创建子数组
代码语言:javascript
复制
const albums = ['Lover', 'Evermore', 'Red', 'Fearless']

const [, ...albums2] = albums

console.log(albums2) // ['Evermore', 'Red', 'Fearless']

对象解构

从作为函数参数传递的对象中解构字段
代码语言:javascript
复制
const anjan = {
        name: '前端小智', age: 20
}

const statement = ({name, age}) => {
        return `My name is ${name}. I am ${age} years old.`
}

statement(anjan)
// My name is 前端小智. I am 20 years old.
嵌套对象解构
代码语言:javascript
复制
const profile= { 
  name: 'Anjan', 
  age: 20,
  professional: {
     profession: '前端开发',
  }
}

const {name, age, professional: {profession}} = profile

console.log(professional) // 这句会报错
console.log(profession) // 前端开发
默认值
代码语言:javascript
复制
const {a = 10, b = 5} = {a: 3};

console.log(a); // 3
console.log(b); // 5
嵌套对象和数组解构
代码语言:javascript
复制
const taylor = {
  name: 'Taylor Swift',
  age: 31,
  address: {
      city: 'New York',
      country: 'USA',
  },
  albums: ['Lover', 'Evermore', 'Red', 'Fearless'],
}

const {
  name,
  age,
  address: { city },
  albums: [lover, ...rest],
} = taylor

console.log(name) // Taylor Swift
console.log(age) // 31
console.log(city) // New York
console.log(lover) // Lover
console.log(rest) // [ 'Evermore', 'Red', 'Fearless' ]

这就是关于 JS 所有你需要知道的 JS 解构知识点。


编辑中可能存在的bug没法实时知道,事后为了解决这些bug,花了大量的时间进行log 调试,这边顺便给大家推荐一个好用的BUG监控工具 Fundebug

原文:https://dev.to/thatanjan/ever...

交流

本文 GitHub https://github.com/qq449245884/xiaozhi 已收录,有一线大厂面试完整考点、资料以及我的系列文章。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-06-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么 JS 中存在解构?
  • 它是如何工作的呢?
  • 数组解构?
  • 数组解构
    • 交换变量
      • 忽略一些返回值
        • 默认值
          • 用 Rest 参数创建子数组
          • 对象解构
            • 从作为函数参数传递的对象中解构字段
              • 嵌套对象解构
                • 默认值
                  • 嵌套对象和数组解构
                  • 交流
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档