项目中关于解构的常用用法,我都帮你整理好了

开发 前端
在本文串,你将学到所有你需要知道的 JS 解构知识点。可从已知对象中解构所需的成员,与顺序无关,可使用展开语法(必须放最后)解构剩下的成员(仍然是对象)。

[[433209]]

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

为什么 JS 中存在解构?

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

  1. const names = { 
  2.     taylor: '小智'
  3.     shawn: '前端小智'
  4.     zayn: '大志'
  5.     halsey: '王大志'

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

  1. console.log(names.taylor) 
  2. console.log(names.shawn) 
  3. console.log(names.zayn) 
  4. console.log(names.halsey) 

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

  1. const taylor = names.taylor 
  2. const shawn = names.shawn 
  3. const zayn = names.zayn 
  4. const halsey = names.halsey 
  5.  
  6. console.log(taylor) 
  7. console.log(shawn) 
  8. console.log(zayn) 
  9. console.log(halsey) 

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

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

  1. const { taylor, shawn, zayn, halsey} = names 
  2.  
  3. console.log(taylor) 
  4. console.log(shawn) 
  5. console.log(zayn) 
  6. console.log(halsey) 

 这比以前好多了。

它是如何工作的呢?

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

  1. const { taylor, shawn, zayn: zaynMalik, halsey} = names 

数组解构?

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

  1. const albums = ['Lover''Evermore''Red''Fearless'
  2.  
  3. const [lover, ever] = albums 
  4. // Lover Evermore 

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

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

数组解构

交换变量

  1. let a = 1; 
  2. let b = 3; 
  3.  
  4. [a, b] = [b, a]; 
  5. console.log(a); // 3 
  6. console.log(b); // 1 

忽略一些返回值

  1. function f() { 
  2.   return [1, 2, 3]; 
  3.  
  4. const [a, , b] = f(); 
  5. console.log(a); // 1 
  6. console.log(b); // 3 

默认值

  1. let a, b; 
  2.  
  3. [a=5, b=7] = [1]; 
  4. console.log(a); // 1 
  5. console.log(b); // 7 

用 Rest 参数创建子数组

  1. const albums = ['Lover''Evermore''Red''Fearless'
  2.  
  3. const [, ...albums2] = albums 
  4.  
  5. console.log(albums2) // ['Evermore''Red''Fearless'

对象解构

从作为函数参数传递的对象中解构字段

  1. const anjan = { 
  2.         name'前端小智', age: 20 
  3.  
  4. const statement = ({name, age}) => { 
  5.         return `My name is ${name}. I am ${age} years old.` 
  6.  
  7. statement(anjan) 
  8. // My name is 前端小智. I am 20 years old. 

嵌套对象解构

  1. const profile= {  
  2.   name'Anjan',  
  3.   age: 20, 
  4.   professional: { 
  5.      profession: '前端开发'
  6.   } 
  7.  
  8. const {name, age, professional: {profession}} = profile 
  9.  
  10. console.log(professional) // 这句会报错 
  11. console.log(profession) // 前端开发 

默认值

  1. const {a = 10, b = 5} = {a: 3}; 
  2.  
  3. console.log(a); // 3 
  4. console.log(b); // 5 

嵌套对象和数组解构

  1. const taylor = { 
  2.   name'Taylor Swift'
  3.   age: 31, 
  4.   address: { 
  5.       city: 'New York'
  6.       country: 'USA'
  7.   }, 
  8.   albums: ['Lover''Evermore''Red''Fearless'], 
  9.  
  10. const { 
  11.   name
  12.   age, 
  13.   address: { city }, 
  14.   albums: [lover, ...rest], 
  15. } = taylor 
  16.  
  17. console.log(name) // Taylor Swift 
  18. console.log(age) // 31 
  19. console.log(city) // New York 
  20. console.log(lover) // Lover 
  21. console.log(rest) // [ 'Evermore''Red''Fearless' ] 

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

作者:Ruphaa 译者:前端小智

来源:dev 原文:https://dev.to/thatanjan/everything-you-need-to-know-about-javascript-destructuring-30e5

 

责任编辑:姜华 来源: 今日头条
相关推荐

2019-01-16 10:55:08

Python 开发编程语言

2018-08-03 10:49:00

2021-02-23 15:54:23

编程技能开发

2022-09-27 11:36:43

UIUI界面设计

2021-11-02 08:14:36

个人信息保护法信息安全个人信息

2010-06-28 11:06:04

SQL Server

2013-12-12 17:14:10

Linuxvim

2023-01-05 17:55:39

分布式架构

2023-12-08 08:01:29

分布式IM即时通讯系统架构设计

2021-08-06 10:02:14

图表饼图联系图表

2020-05-11 09:38:52

Python开发函数

2021-02-23 09:06:00

MVCC版本并发

2021-02-15 12:06:05

PythonSetDict

2010-04-12 16:12:07

Oracle HINT

2010-04-22 10:36:41

Oracle数据导入

2019-11-14 09:17:05

TiDB分库分表性能

2021-07-26 05:20:47

JavaScript解构赋值数组解构

2020-04-17 20:58:34

MySQLSQL优化

2017-11-27 11:25:36

MySQL优化数据

2021-10-22 10:05:19

wget命令Linux
点赞
收藏

51CTO技术栈公众号