博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
es6学习--变量的解构赋值
阅读量:5081 次
发布时间:2019-06-13

本文共 1711 字,大约阅读时间需要 5 分钟。

1.概念

     解构:按一定的方式,从数组或者对象中取值,对变量进行赋值。

     如果解构不成功,变量的值就等于undefined

  2.数组解构 

let [a,b,c] = [1,2,3];console.log(a); //1let [foo,[bar,baz]] = [2,['aaa',4]];console.log(foo) //2console.log(bar) //aaaconsole.log(baz) //4let [x,y,...z] = ['a'];console.log(foo) //aconsole.log(bar) //undefinedconsole.log(baz) //[]

 

 解构允许指定默认值

  

let [a=true,b,c] = [,2,3];console.log(a); //true

 

允许引用其他变量,该变量必须已经声明

const PI = 3.14let [a=true,b=PI,c] = [,,3];console.log(b); //3.14

 

3.对象的解构赋值

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

   

const {foo,bar,baz} = {baz:"123",foo:"biubiu",bar:"dududu"};console.log(foo);  //biubiuconsole.log(bar); //dududuconsole.log(baz); //123

对象的解构赋值也可以嵌套,也可以指定默认值

  

4.字符串解构赋值

 

const [a,b,c] = 'biu';console.log(a);  //bconsole.log(b); //iconsole.log(c); //u

 

5.数值和布尔值的解构赋值

  只要等号右边的值不是对象或数组,就先将其转为对象。由于undefinednull无法转为对象,所以对它们进行解构赋值,都会报错。

  

let {toString:s} = 123;let {toString:flag} = true;console.log(s)  //[Function: toString]console.log(flag) //[Function: toString] console.log(s === Number.prototype.toString)      //trueconsole.log(flag === Boolean.prototype.toString)  //true

 

6.函数解构赋值

 

function move({x,y}={x:0,y:0}) {    return [x,y];}console.log(move({x:3,y:8})) //[3,8]console.log(move({x:3}))  //[3,undefined]console.log(move({}))   //[undefined,undefined]console.log(move())    //[0,0]

 

7.()的问题

 建议只要有可能,就不要在模式中放置圆括号。

 

8. 用途

   交换变量的值

let x =1;let y = 2;[x,y] = [y,x];

从函数中返回多个值

 

function example () {    return [1,2,3];}let [a,b,c] = example();console.log(a)  //1console.log(b)  //2console.log(c)  //3

 

函数参数的定义

 

提取json数据

  

let jsonData = {    id:42,    status:"ok",    data:[12,23]};let {id,status,data} = jsonData;console.log(id,status,data);

 

转载于:https://www.cnblogs.com/wjylca/p/7448268.html

你可能感兴趣的文章
最短路默写
查看>>
c# 反射事件
查看>>
【Leetcode】【Medium】Search a 2D Matrix
查看>>
平衡树(treap,sbt,splay,link-cut-tree)
查看>>
Java学习IO篇
查看>>
salesforce零基础学习(九十二)使用Ant Migration Tool 实现Metadata迁移
查看>>
asp.net 自定义控件之ItemTemplate
查看>>
Leetcode 83: Remove Duplicates from Sorted List
查看>>
动态调用web服务 --WSHelper.cs
查看>>
c#编程:使用"like“查询access数据库查询为空
查看>>
Newtonsoft.Json高级用法 1.忽略某些属性 2.默认值的处理 3.空值的处理 4.支持非公共成员 5.日期处理 6.自定义序列化的...
查看>>
oracle常用管理命令
查看>>
构建之法第四章两人合作
查看>>
kmp-洛谷P2375 动物园
查看>>
杂曲歌辞·杨柳枝
查看>>
swiftmailer时没有设置https的选项,才可以发送成功。在linux下面
查看>>
C#程序分析
查看>>
(6)javascript 基本概念--- -- 函数
查看>>
在Windows服务中托管 ASP.NET Core的坑
查看>>
Linux MySQL主从复制(Replication)配置
查看>>