解构(模式匹配)

数组解构:

  1. 等号左边的变量放到中括号内部,匹配右侧数组中得元素

    // 数组的不完全解构
    // let [a,b] = [1,2,3];
    // console.log(a,b);        //1,2let [a,b,c] = [1,[2,3],4]console.log(a,b,c);           //1 [ 2, 3 ] 4
    
    // 拓展运算符 ...
    // ...用在=左边,有聚合的作用,生成新的对象或者数组
    // ...用在=右边,有拆分、剥离的作用let [a,...b] = [1,2,3]console.log(a,b);       //1 [ 2, 3 ]
    
    // 数组解构设置默认值,默认值也可以为一个函数let [a,b,c=10] = [1,2]console.log(a,b,c);       //1 2 10
    // function myFun(){
    //     console.log('函数');
    // }
    // let [a,b,c = myFun()] = [1,2]
    // console.log(a,b,c);         //函数  1 2 undefined
    

对象解构

  1. 等号左边的变量放到大括号内部,匹配右侧数组中的元素。对象的属性没有次序,变量必须与属性同名,才能取到正确的值

       // 对象解构,使用对象的简写形式,(省略key,保留value对应的变量)let {name:username,age:userage} = {name:'张三',age:12}console.log(username,userage);   //张三 12
    
       // 嵌套解构let obj = {p:['Hello',{y:'World'}]}let {p:[a,{y:b}]} = objconsole.log(a+b);   //HelloWorld
    
       // 默认值(默认值生效的条件是,对象的属性值严格等于undefined)let {name,age,gender='male'} = {name:'张三',age:12}console.log(name,age,gender);   //张三 12 male
    
       // 拓展运算符完成对象的深克隆let obj1 = {a:1,b:2,c:3}let {...b} = obj1console.log(b);         //{ a: 1, b: 2, c: 3 }    console.log(b === obj1);  //false
    

字符串解构

  1. 等号左边的变量如果放在中括号内进行的类似于数组解构,从字符串中获取指定字符;如果放在大括号内进行的类似于对象解构,从实例属性获方法中解构。
   // 字符串既可以使用[]解构,也可以使用{}解构// 使用[]解构字符串内部的字符// 使用{}解构字符串原型中的方法和属性let [a, b, c, d, e] = 'hello'console.log(a, b, c, d, e);    //h e l l olet { length, toString } = 'hello'console.log(length, toString);    //5 [Function: toString]// 字符串转数组(数组解构、拓展运算符)let [...arr] = 'hello'console.log(arr);     //[ 'h', 'e', 'l', 'l', 'o' ]

数值解构

  1. 等号左边的变量放在大括号中进行解构,可以获取到数值包装器构造函数原型中指定的方法。
//数字和Boolean只能使用{}解构其原型对象中的方法和属性
// 而不能使用[]解构,因为他们都是不可迭代的// let [a,b] = 10;
// console.log(a,b);     //TypeError: 10 is not iterablelet {valueOf} = 12;
console.log(valueOf);         //[Function: valueOf]

布尔类型解构

  1. 等号左边的变量放在大括号中进行解构,可以获取到布尔包装器构造函数原型中指定的方法。
    let [c] = true;          //TypeError: true is not iterable

es6解构(模式匹配)相关推荐

  1. ES6 解构赋值的用法笔记

    1.概念:解构赋值可以理解为对赋值运算符的一种扩展.它主要针对数组或者 对象进行模式匹配,然后对模式中的变量进行赋值. 2.特性:采用ES6解构赋值的方式可以代码的可读性更高.代码书写更加简洁.清晰. ...

  2. ES6解构赋值原理详解

    ES6解构赋值 ES6变量的解构赋值本质上是"模式匹配",只要等号两边的模式相同,左边的变量就会被赋予匹配的右边的值,如果匹配不成功变量的值就等于undefined 数组的解构赋值 ...

  3. 前端学习必备之ES6解构赋值的常见用法

    1.解构赋值可以轻松获取对象或者数组中的数据 var jsonData = {data: "111",data2: ["test","test2&qu ...

  4. es6解构--简化代码

    第一段代码直接用 import { Radio } from 'antd'; render() {return(<Radio.Group value={size} onChange={this. ...

  5. [OHIF-Viewers]医疗数字阅片-医学影像-es6解构赋值-const{}=-let{}=

    [OHIF-Viewers]医疗数字阅片-医学影像-es6解构赋值-const{}=-let{}= 解构赋值语法是一种 Javascript 表达式.通过解构赋值, 可以将属性/值从对象/数组中取出, ...

  6. ES6解构赋值: ES6...转为ES5的写法

    es6的特性,主要用于 数组和对象的析构 直接上问题: 因为chrome低版本(用的55版本)不支持es6...的下面这种写法, 需要转为es5写法 function calcLinePaths() ...

  7. 菜鸟也谈js(一)——ES6解构对象篇

    前言 为什么我会在开篇谈这样一个low到爆的问题呢?这是因为一个伟大的错误,多么痛的领悟!从前,我深深的以为,后台是权威,后台的数据必须是对的.直到有一天测试给我反馈了一个bug,我的页面崩溃了... ...

  8. 聊聊 ES6 解构(下)

    大家好,我是Chuck,一个不那么正经却热爱前端的孩儿. 昨晚睡觉的时候,突然想起来点事情,点开了掘金,一看上文,这是什么东西?怎么忘了好多东西呢? 这篇文章接上文 聊聊 ES6 解构|8月更文挑战. ...

  9. js之删除对象中的属性——delete、es6解构赋值、自执行匿名函数

    js之删除对象中的属性--delete.es6解构赋值.自执行匿名函数 实例 const person = {name: '李世民',gender: 'male',age: 24 };// 删除目标对 ...

最新文章

  1. 三代测序纠错软件汇总篇
  2. MYSQL数值运算符和函数用法
  3. ORACLE ERP 的前世今生(5)
  4. 完美,竟然用一个脚本就把系统升级到https了,且永久免费!
  5. socket多线程方式案例
  6. java.util.Properties
  7. Smobiler 4.4 更新预告 Part 1(Smobiler能让你在Visual Studio上开发APP)
  8. 不允许后退提交数据的方法(抗重复刷新提交)
  9. Flask+uwsgi+Nginx环境搭建
  10. 让自己开发的Web应用程序与SharePoint共存
  11. Ubuntu系统上安装微信(legacy)
  12. Shell.NavBarIsVisible=“false“
  13. Papervision3d QuadTree四叉树相机的示例
  14. javascript 快速入门
  15. 在termux中利用安卓的vulkan库加速NCNN
  16. 谈谈应聘阿里全流程(良心之作,好评满满)
  17. 揭秘 | 互联网6大主流盈利模式(内附美团外卖、摩拜案例)
  18. PostgreSQL 别名
  19. 城市级智能网联示范区情况全扫描(2022版)
  20. 圣墟 第一百二十九章 异类直播

热门文章

  1. 销售书籍推荐,销售人员最该看的是这本书!
  2. python3安装遇到 zipimport.ZipImportError: can't decompress data; zlib not available
  3. ubuntu WPS升级后打不开
  4. Hexo 建立你的博客
  5. 漫谈深度学习在Super Resolution(超分辨率)领域上的应用
  6. imap和pop3的区别有哪些?
  7. 山东理工大学计算机考研究生分数线,山东理工大学2021考研分数线已公布
  8. 问题 E: 货币套汇
  9. springboot开发中resources下的静态资源css,html,js等实时生效(热更新)
  10. 珠心算测验(算法优化)