ES6: 解构赋值

这篇具有很好参考价值的文章主要介绍了ES6: 解构赋值。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、概念

解构赋值是一种快速为变量赋值的简洁语法,本质上仍然是为变量赋值,分为数组解构、对象解构两大类型。

2、数组解构

数组解构是将数组的单元值快速批量赋值给一系列变量的简洁语法,如下代码所示:

2.1 基本用法

数组解构赋值:
eg1:

// 普通的数组
let arr = [1, 2, 3]
// 批量声明变量 a b c 
// 同时将数组单元值 1 2 3 依次赋值给变量 a b c
let [a, b, c] = arr
console.log(a); // 1
console.log(b); // 2
console.log(c); // 3

eg2:

const pc = ['海尔', '联想', '小米', '方正'];
[hr, lx, mi, fz] = pc
console.log(hr, lx, mi, fz)  // 海尔 联想 小米 方正

eg3:

function getValue () {
	return [100, 60]
}
[max, min] = getValue()
console.log(max, min)  // 100 60

eg4:

const pc = ['海尔', '联想', '小米', '方正']
const [hr, lx, mi, fz] = ['海尔', '联想', '小米', '方正']
console.log(hr)  // 海尔
console.log(lx)  // 联想
console.log(mi)  // 小米
console.log(fz)  // 方正

eg5: 交换2个变量的值

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

2.2 变量多, 单元值少 , undefined

const [a, b, c, d] = [1, 2, 3]
console.log(a) // 1
console.log(b) // 2
console.log(c) // 3
console.log(d) // undefined

2.3 变量少, 单元值多

const [a, b] = [1, 2, 3]
console.log(a) // 1
console.log(b) // 2

2.4 剩余参数 变量少, 单元值多

const [a, b, ...c] = [1, 2, 3, 4]
console.log(a) // 1
console.log(b) // 2
console.log(c) // [3, 4]  真数组

2.5 防止 undefined 传递

const [a = 0, b = 0] = [1, 2]
// const [a = 0, b = 0] = []
console.log(a) // 1
console.log(b) // 2

2.6 按需导入赋值

const [a, b, , d] = [1, 2, 3, 4]
console.log(a) // 1
console.log(b) // 2
console.log(d) // 4
const arr = [1, 2, [3, 4]]
console.log(arr[0])  // 1
console.log(arr[1])  // 2
console.log(arr[2])  // [3,4]
console.log(arr[2][0])  // 3

2.7 多维数组解构

const arr = [1, 2, [3, 4]]
const [a, b, c] = [1, 2, [3, 4]]
console.log(a) // 1
console.log(b) // 2
console.log(c) // [3,4]
const [a, b, [c, d]] = [1, 2, [3, 4]]
console.log(a) // 1
console.log(b) // 2
console.log(c) // 3
console.log(d) // 4

总结:

  1. 赋值运算符 = 左侧的 [] 用于批量声明变量,右侧数组的单元值将被赋值给左侧的变量
  2. 变量的顺序对应数组单元值的位置依次进行赋值操作
  3. 变量的数量大于单元值数量时,多余的变量将被赋值为 undefined
  4. 变量的数量小于单元值数量时,可以通过 … 获取剩余单元值,但只能置于最末位
  5. 允许初始化变量的默认值,且只有单元值为 undefined 时默认值才会生效

注:支持多维解构赋值,比较复杂后续有应用需求时再进一步分析

3、对象解构

对象解构是将对象属性和方法快速批量赋值给一系列变量的简洁语法,如下代码所示:

3.1 基本用法

<script>
  // 普通对象
  const user = {
    name: '小明',
    age: 18
  };
  // 批量声明变量 name age
  // 同时将数组单元值 小明  18 依次赋值给变量 name  age
  const {name, age} = user
  // const { name: username, age } = user  // 对象解构的变量名 可以重新改名  旧变量名: 新变量名
	
  console.log(name) // 小明
  console.log(age) // 18
</script>

3.2 解构数组对象

const person= [
  {
    uname: '刘德华',
    age: 6
  }
]
const [{ uname, age }] = person
console.log(uname)  // 刘德华
console.log(age)  // 6

3.3 多级对象解构

const person= {
  name: '刘德华',
  family: {
    mother: '刘妈妈',
    father: '刘爸爸',
    daughter: '刘向蕙'
  },
  age: 6
}
// 多级对象解构
const { name, family: { mother, father, sister } } = person
console.log(name)  // 刘德华
console.log(mother)  // 刘妈妈
console.log(father)  // 刘向蕙
console.log(sister)  // 乔治

3.4 多级对象解构案例

// 1. 这是后台传递过来的数据
const msg = {
  "code": 200,
  "msg": "获取新闻列表成功",
  "data": [
    {
      "id": 1,
      "title": "5G商用自己,三大运用商收入下降",
      "count": 58
    },
    {
      "id": 2,
      "title": "国际媒体头条速览",
      "count": 56
    },
    {
      "id": 3,
      "title": "乌克兰和俄罗斯持续冲突",
      "count": 1669
    },

  ]
}

// 需求1: 请将以上msg对象  采用对象解构的方式 只选出  data 方面后面使用渲染页面
// const { data } = msg
// console.log(data)
// 需求2: 上面msg是后台传递过来的数据,我们需要把data选出当做参数传递给 函数
// const { data } = msg
// msg 虽然很多属性,但是我们利用解构只要 data值
function render({ data }) {
  // const { data } = arr
  // 我们只要 data 数据
  // 内部处理
  console.log(data)

}
render(msg)

// 需求3, 为了防止msg里面的data名字混淆,要求渲染函数里面的数据名改为 myData
function render({ data: myData }) {
  // 要求将 获取过来的 data数据 更名为 myData
  // 内部处理
  console.log(myData)

}
render(msg)

总结:文章来源地址https://www.toymoban.com/news/detail-492800.html

  1. 赋值运算符 = 左侧的 {} 用于批量声明变量,右侧对象的属性值将被赋值给左侧的变量
  2. 对象属性的值将被赋值给与属性名相同的变量
  3. 对象中找不到与变量名一致的属性时变量值为 undefined
  4. 允许初始化变量的默认值,属性不存在或单元值为 undefined 时默认值才会生效

到了这里,关于ES6: 解构赋值的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JavaScript全解析——ES6函数中参数的默认值和解构赋值

    本文为千锋资深前端教学老师带来的【JavaScript全解析】系列,文章内含丰富的代码案例及配图,从0到1讲解JavaScript相关知识点,致力于教会每一个人学会JS! 文末有本文重点总结,可以收藏慢慢看~ 更多技术类内容,主页关注一波! 给函数的形参设置一个默认值, 当你没有传

    2024年02月05日
    浏览(29)
  • JS(es6)同时给多个变量赋值

    在ES6中,可以使用解构赋值语法同时给多个变量赋值。解构赋值语法可以从数组或对象中提取值,并将其赋给多个变量。 1. 数组解构赋值: 2. 对象解构赋值: 3. 数组和对象同时进行解构赋值:

    2024年02月15日
    浏览(38)
  • ES6 全详解 let 、 const 、解构赋值、剩余运算符、函数默认参数、扩展运算符、箭头函数、新增方法,promise、Set、class等等

    ​ ECMAScript 6.0,简称 ES6,是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言 要讲清楚这个问题,需要回顾历史。1996 年 11 月,JavaScript 的创造者 Netscape 公司,决定将 JavaSc

    2024年04月15日
    浏览(38)
  • 【React系列】ES6学习笔记(一)let与const、解构赋值、函数参数默认值\rest参数\箭头函数、数组和对象的扩展、Set和Map等

    本文参考自电子书《ECMAScript 6 入门》:https://es6.ruanyifeng.com/ 尽量使用 let 声明变量,而不是 var 。 let 声明的变量是 块级作用域 , var 声明的变量是 全局作用域 。 使用 let 变量 必须先声明再使用,否则报错,不存在变量提升 。相对的 var 声明的变量如果提前使用,不会报错

    2024年02月03日
    浏览(35)
  • 【JavaScript】JavaScript 变量 ① ( JavaScript 变量概念 | 变量声明 | 变量类型 | 变量初始化 | ES6 简介 )

    JavaScript 变量 是用于 存储数据 的 容器 , 通过 变量名称 , 可以 获取 / 修改 变量 中的数据 ; 变量 的 本质 是 存放数据 的 一块内存空间 ; 在 JavaScript 中, 使用 var / let / const 来声明变量 , 每个变量都有一个 变量名 和 一个 变量值 ; JavaScript 变量声明 : var : 使用

    2024年03月15日
    浏览(40)
  • ES6 解构

    解构的语法中, ... (展开运算符)和 {} (对象字面量)扮演着不同的角色。 ... (展开运算符): 在解构中, ... 被用作展开运算符,用于将数组或对象中的剩余元素获取为一个单独的变量。 示例: 在上述示例中, ...rest 表示剩余的数组元素。变量 a 和 b 分别赋值为数组的

    2024年02月13日
    浏览(36)
  • ES6-解构

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 🍿🍿🍿es6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,称之为解构。 解构是es6的新特性,比ES5代码简介、清晰、减少代码量 ES5中的为变量赋值,只能直接指定值。 es6匹配模式写法

    2024年02月10日
    浏览(27)
  • ES实用的深度解构赋值方法

    ES6 中允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。 使用解构赋值可以将复杂的代码整理的更加干净整洁。 在没有使用解构之前,想要确定对象中的某些属性,那么就需要从对象中获取属性然后赋值给变量,这样会让代码显得非

    2024年02月03日
    浏览(31)
  • ES6解构对象、数组、函数传参

      目录  1.对象解构 2.对象解构的细节处理 2.1.解构的值对象中不存在时 2.2.给予解构值默认参数   2.3.非同名属性解构 3.数组解构 3.1基础解构语法 3.2数组嵌套解构 4.函数解构传参 5.解构小练习 在ES6的新语法中新增了解构的方法,它可以让我们很方便的从数组或者对象身上取

    2024年02月16日
    浏览(33)
  • 【ES6】解构语句中的冒号(:)

    在解构赋值语法中,冒号(:)的作用是为提取的字段指定一个新的变量名。 让我们以示例 const { billCode: code, version } = route.query 来说明: { billCode: code, version } 表示从 route.query 对象中提取 billCode 和 version 字段。 冒号(:)后面的 code 是新的变量名,表示将 billCode 字段的值赋给

    2024年01月21日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包