2023.1.29今天我学习了对象的解构赋值。

解构不仅可以用于数组,还可以用于对象。

let {foo,bar} = {foo : "aaa",bar : "bbb"};
foo // "aaa"
bar // "bbb"

对象的解构与数组有一个重要的不同,数组的元素是按次序排列的,变量的取值是由它的位置决定的,而对象的属性没有次序,变量必须与属性同名才能取到正确的值。

如:

let {bar,foo} = {foo : "aaa",bar : "bbb"}
foo // "aaa"
bar // "bbb"let {baz} = {foo : "aaa",bar : "bbb"}
baz // undefined

(1)等号左边的两个变量的次序与等号右边两个同名属性的次序不一致,但是对取值完全没有影响。

(2)如果变量没有对应的同名属性,导致取不到值,最后等于undefined。

如果变量名与属性名不一致,必须写成下面这样:

var {foo : baz} = {foo : 'aaa',bar : 'bbb'};
baz // "aaa"let obj = {first : 'hello',last : 'world'};
let {first : f,last : l} = obj;
f // 'hello'
l // 'world'let {foo : foo,bar : bar} = {foo : "aaa",bar : "bbb"};
baz // "aaa"
foo // error: foo is no defined

对象的解构赋值的内部机制是先找到同名属性,然后再赋值给对应的变量。真正被赋值的是后者,而不是前者。

foo是匹配的模式,baz才是变量,真正被赋值的是变量baz,而不是模式foo。

嵌套结构:

let obj = {p:{'Hello',{y : 'World'}}
};let {p:{x,{y}}} = obj;x // 'Hello'
y // 'World'

注意:这时候的p是模式,不会被赋值,如果p也要作为变量赋值,可以写成下面这样。

let obj = {p:{'Hello',{y : 'World'}}
};let {p,p:{x,{y}}} = obj;x // 'Hello'
y // 'World'
p // {"Hello",{y:"World"}}

js 对象的解构赋值相关推荐

  1. Vue学习笔记(三)Vue2三种slot插槽的概念与运用 | ES6 对象的解构赋值 | 基于Vue2使用axios发送请求实现GitHub案例 | 浏览器跨域问题与解决

    文章目录 一.参考资料 二.运行环境 三.Vue2插槽 3.1 默认插槽 3.2 具名插槽 3.3 作用域插槽 ES6解构赋值概念 & 作用域插槽的解构赋值 3.4 动态插槽名 四.GitHu ...

  2. 【ES6学习】对象的解构赋值

    解构不仅可以用于数组,还可以用于对象. let { foo , bar } = { foo :"aaa ", bar :"bbb " } ; too // &q ...

  3. ES6 对象的解构赋值

    对象的解构赋值 解构不仅可以用于数组,还可以用于对象. var { foo, bar } = { foo: "aaa", bar: "bbb" }; foo / ...

  4. java对象赋值给数组_带你深入的理解数组和对象的解构赋值。

    es6提供了一个非常好的特性,即变量的解构赋值.从而我们可以方便的从数组和对象中提取数据并将它们赋值给变量.这是非常必要的.先来看在这个新特性发布之前我们是如何从数组中提取数据的.如下: let nu ...

  5. JS:ES6-3 解构赋值与模板字符串

    什么是解构赋值: ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构赋值: 代码演示及相关说明: <!DOCTYPE html> <html> < ...

  6. 变量的解构赋值(对象)

    阮一峰ES6入门 对象的解构赋值 let { foo, bar } = { foo: "aaa", bar: "bbb" }; foo // "aaa ...

  7. 【前端17_JS】ES 6:Let 、Const、对象冻结、解构赋值、暂时性死区 TDZ、惰性求值、模板字符串

    ES 6 简介 let 声明变量 变量不提升 暂时性死区 TDZ const 静态变量 (常量*) 实质 引申 对象冻结 解构赋值 起步 ...arr 展开运算符 ...[] 数组拓展运算符 传参 找 ...

  8. js进阶--JSON,克隆,解构赋值,class类与箭头函数 06

    文章目录 Array.from(类数组) sort中的a,b代表的每一项 JSON 浅克隆 深克隆 es6 let const 对于对象中属性名与属性值一样的只写一个就可以 解构赋值 数组的解构赋值 ...

  9. ES6变量的解构赋值--对象篇

    目录 使用方式 普通形式 嵌套结构 使用默认值 注意事项 上一篇我们讲解了数组的解构赋值,解构还可以用于对象.字符串等等,这里我们来讲解对象的解构赋值. ES6变量的解构赋值--数组_zxn20012 ...

最新文章

  1. R语言可视化包ggplot2绘制排序条形图实战:按照分类因子排序、按照数值排序
  2. WPF触发器之数据触发器(A)
  3. php-函数小知识点
  4. kafka高可用集群原理
  5. [pytorch、学习] - 9.2 微调
  6. C# 7 中的模范和实践
  7. 【Makefile】
  8. 小技巧教你解决此windows副本不是正版的问题
  9. paramiko学习笔记
  10. ACM常用算法及练习(2)
  11. java--idea-生成jar包的配置
  12. xml解析工具 SAXReader 的使用
  13. 手机端用云服务器文件在哪里设置,如何使用FolderSync在安卓手机上同步文件夹到坚果云? | 坚果云帮助中心...
  14. 专家调查显示:液晶电视坏眼超等离子电视
  15. [原][连载]那时花开(三)
  16. oracle update exsits,Oracle 11g 递归+ exists执行计划的改变
  17. 英文歌曲:A place nearby (天堂若比邻)
  18. java while 循环练习题
  19. 矩阵的压缩存储(随机稀疏矩阵的建立和输出)
  20. 每日一道leetcode(python)695. 岛屿的最大面积

热门文章

  1. pytorch 中的topk函数
  2. HTTPS 与 SSL
  3. iOS description方法的使用介绍
  4. 对抗机器学习——FGSM经典论文 EXPLAINING AND HARNESSING ADVERSARIAL EXAMPLES
  5. 创业失败后的他们,是怎么找工作的?
  6. 589. N 叉树的前序遍历(javascript)589. N-ary Tree Preorder Traversal
  7. mysql格式化日期和时间
  8. 在虚拟环境下使用pip install -r requirements.txt导入项目依赖包却没有安装上出现的问题
  9. Rk3588 Rk3588s对比
  10. 总线(四)Modbus总线 协议