首页 > 其他分享 >UES-05-解构

UES-05-解构

时间:2024-05-03 22:44:06浏览次数:21  
标签:arr obj 05 解构 数组 var1 UES 属性

解构的作用

方便从对象或者数组等数据结构中提取想要的数据。

使用任何一种类型的解构,当 = 右边的值为 null 或 undefined 时,会抛出错误。

对象解构

通过在 = 左边使用 {},在大括号内部写入以逗号分隔的 = 右边对象的属性名,则对应的属性名作为本地变量名,同时变量的值即为属性值。

({ name } = obj ) 的形式可以为与对象属性名称相同的变量赋予对应属性的值。表达式必须使用小括号括起来,不然出错。

fun({ name } = obj) 的形式解构时,传入函数的值为 obj,同时也为 name 赋值。

在解构时,如果 = 左边的变量名在右边对象中没有对应的同名属性,则会为该变量赋值 undefined,此时可以以 { name = default } = obj 形式解构,当对象中没有同名的属性或属性值为 undefined 时,该变量被赋予默认值。
{ attr : varName = default } = obj 形式解构时,会将属性 attr 的值赋给本地变量 varName,如果该属性不存在,则本地变量使用默认值。默认值是可选的。

可以以任意深度嵌套使用解构表达式,如 { a : { b : varc }} = obj 表示从对象 obj 中找到属性 a(a 是一个对象属性),然后从属性 a 中寻找属性 b,将属性 b 赋值给变量 varc。

数组解构

[pos0, pos1] = arr 形式对数组解构时,按照数组中对应位置的值进行赋值。如 [ , , p2] = arr 表示将数组 arr 中第三个元素赋值给 p2,前面的逗号表示占位符。

数组解构赋值时不需要像对象解构一样需要小括号括起来,以 [var1, var2] = arr 形式即可。使用这种形式可以简单互换两个变量的值,如 [ a, b ] = [ b, a ]

[ var1, var2 = default ] = arr 形式可以使用默认值,当数组中该位置没有值或值为 undefined 时使用默认值。

[ var1, [ var2 ]] = arr 形式可以嵌套使用数组解构。此时 var1 对应数组 arr 中第一个元素,var2 对应数组 arr 中第二个元素(这个元素是一个数组)的第一个元素。

在数组解构中,以 [var1, ...var2] = arr 的形式使用时,表示将 arr 的第一个元素赋给 var1,剩下的所有元素赋给 var2,此时 var2 表示一个数组。在这种写法中,...var2 必须是最后一个变量。

混合解构

对象解构和数组解构可以混合使用。如

// 将 obj 的 attr1 属性的 attr11 属性单独提取出来
// 将 attr3 属性的第一个元素赋给 var1。
let {
  attr1 : { attr11 },
  attr3 : [ var1 ]
} = obj;

参数解构

fun(a, b, { c, d, e }) 形式表示第三个参数是参数解构,参数里面的变量可传入也可以不传入,当不传入时,该变量的值为 undefined。如果不给第三个参数传递任何值,会抛出错误。解决这个问题的方式为:重写函数声明为:fun(a, b, { c, d, e } = {}),提供默认值。也可以写成 {c = default, d, e} 这种形式为参数提供可选的默认值。

参考

[1] Zakas, Understanding ECMAScript 6, 2017.

标签:arr,obj,05,解构,数组,var1,UES,属性
From: https://www.cnblogs.com/xdreamc/p/16530433.html

相关文章

  • requestVideoFrameCallback
    requestVideoFrameCallback:将新视频帧发送到合成器时运行的回调函数requestVideoFrameCallback()的用法与Window.requestAnimationFrame()相同。您可以使用它来运行一个回调函数,该函数在下一个视频帧发送到合成器时执行某些操作。当合成下一个视频帧时,再次调用requestVid......
  • 05_多元线性回归
    第5章多元线性回归5.1二元线性回归案例说明Cobb-Dougls生成函数:\[y_i=\alphak_i^{\beta}l_i^{\gamma}e^{\epsilon_i}\]两边同时取对数,可转换为线性模型:\[\lny_i=\ln\alpha+\beta\lnk_i+\gamma\lnl_i+\epsilon_i\]这就是二元线性回归模型。代码实现[[Chapter......
  • 20240503比赛总结
    T1[CF1279C]StackofPresentshttps://gxyzoj.com/d/hzoj/p/3686数据出锅了,100->40按题意模拟即可,可以发现,最优情况下,一定是将取出的数按后面的拿的顺序排序,O(1)取出,而在取之前未排序的,则需要花2k+1的时间排序并取出代码:#include<cstdio>#definelllonglongusingnamesp......
  • go学习05
    gorm的使用typeUserstruct{ gorm.Model Namestring Ageint Sexbool}funcmain(){ db,err:=gorm.Open("mysql","root:password@/dbname?charset=utf8&parseTime=True&loc=Local") iferr!=nil{ panic("failedto......
  • 2024-05-02 通达信指标 归零五眼
      涨幅:=C/REF(C,1)>1.098;STICKLINE(涨幅,C,O,2.5,0),COLORWHITE;异动:="999999$C"<REF("999999$C",1)ANDC>REF(C,1);DRAWTEXT(异动,L,'异');黄金阴:=O>REF(C,1)ANDC<OANDV<=REF(V,1);黄金阴眼:=O>REF(C+0.01,1)ANDC<REF......
  • 2024-05-02 通达信指标 大盘涨跌家数
      X_1:="999999$ADVANCE";X_2:="999999$DECLINE";X_3:="399107$ADVANCE";X_4:="399107$DECLINE";总家数:X_1+X_2+X_3+X_4+"880005$LOW",NODRAW;涨家数:X_1+X_3,NODRAW;跌家数:X_2+X_4,NODRAW;差数:涨家数-跌家数,NODRAW;涨占比:涨家数/总家数*100,N......
  • 使用新版flask-script时报错No module named flask._compat和cannot import name ‘_r
    flask版本:3.0.3Flask-Script:2.0.6Flask-script使用及错误Nomodulenamedflask._compat解决方法windows下推荐解决方案,点击flask_script进入init.py文件或虚拟环境\Lib\site-packages\flask_script_init_.pylinux下cd到目录/usr/local/lib/python3.12/site-packages......
  • rt1052点亮0.96寸spi屏
    一,前言目的是用rgb屏,但是rgb屏硬件还没准备好,所以要先学习下lvgl上位机,但是学习完要烧录到屏中看效果,所以我今天就先点亮spi屏。找了之前stm32时候点亮频的lcd驱动进行的移植,cs我不是gpio控制的,所以注释了2行,看起来无影响。二,说明0.96存spi驱动的LCD屏ST7735S驱动成功,已经备份......
  • 20240502比赛总结
    [NOIP2017提高组]时间复杂度https://gxyzoj.com/d/hzoj/p/3673按题意模拟即可时间复杂度的计算方式是:常数->常数O(1)常数->nO(n)n->nO(1)就是细节很多,也不会算时间复杂度,挂成了40代码:#include<cstdio>#include<iostream>#include<string>#include<map>#......
  • [Zer0pts2020]Can you guess it?
    [Zer0pts2020]Canyouguessit?打开环境没有什么特殊的地方,可以点击按钮查看源码<?phpinclude'config.php';//FLAGisdefinedinconfig.phpif(preg_match('/config\.php\/*$/i',$_SERVER['PHP_SELF'])){exit("Idon'tknowwhatyou......