JavaScript 解构赋值

JavaScript 解构赋值文章目录JavaScript解构数组解构分配默认值交换变量跳过项将剩余元素分配给单个变量嵌套解构赋值参考文档    在本教程中,您将借助示例了解JavaScript解构赋值。JavaScript解构    ES6中引入的解构赋值可以轻松地将数组值和对象属性分配给不同的变量。例如,    在ES6之前://assigningobjectattributestovariablesconstperson={name:’Sara’,age:25,

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

    在本教程中,您将借助示例了解 JavaScript 解构赋值。

JavaScript 解构

    ES6 中引入的解构赋值可以轻松地将数组值和对象属性分配给不同的变量。例如,
    在 ES6 之前:

// assigning object attributes to variables
const person = {
    name: 'Sara',
    age: 25,
    gender: 'female'    
}

let name = person.name;
let age = person.age;
let gender = person.gender;

console.log(name); // Sara
console.log(age); // 25
console.log(gender); // female

Jetbrains全家桶1年46,售后保障稳定

    来自 ES6:

// assigning object attributes to variables
const person = {
    name: 'Sara',
    age: 25,
    gender: 'female'    
}

// destructuring assignment
let { name, age, gender } = person;

console.log(name); // Sara
console.log(age); // 25
console.log(gender); // female

    注意:名称的顺序在对象解构中无关紧要。
    例如,您可以将上述程序编写为:

let { age, gender, name } = person;
console.log(name); // Sara

    注意:在解构对象时,应该使用与相应对象键相同的变量名称。
    例如,

let {name1, age, gender} = person;
console.log(name1); // undefined

    如果要为对象键分配不同的变量名称,可以使用:

const person = {
    name: 'Sara',
    age: 25,
    gender: 'female'    
}

// destructuring assignment
// using different variable names
let { name: name1, age: age1, gender: gender1 } = person;

console.log(name1); // Sara
console.log(age1); // 25
console.log(gender1); // female

数组解构

    您也可以用类似的方式执行数组的解构。例如,

const arrValue = ['one', 'two', 'three'];

// destructuring assignment in arrays
const [x, y, z] = arrValue;

console.log(x); // one
console.log(y); // two
console.log(z); // three

分配默认值

    您可以在使用解构时为变量指定默认值。例如,

let arrValue = [10];

// assigning default value 5 and 7
let [x = 5,  y = 7] = arrValue;

console.log(x); // 10
console.log(y); // 7

    在上述程序中,arrValue 只有一个元素。因此,

  • x 变量将是 10
  • y 变量采用默认值 7

    在对象解构中,可以以类似的方式传递默认值。例如,

const person = {
    name: 'Jack',
}

// assign default value 26 to age if undefined
const { name, age = 26} = person;

console.log(name); // Jack
console.log(age); // 26

交换变量

    在此示例中,使用解构赋值语法交换了两个变量。

// program to swap variables

let x = 4;
let y = 7;

// swapping variables
[x, y] = [y, x];

console.log(x); // 7
console.log(y); // 4

跳过项

    您可以跳过数组中不需要的项,而无需将它们分配给局部变量。例如,

const arrValue = ['one', 'two', 'three'];

// destructuring assignment in arrays
const [x, , z] = arrValue;

console.log(x); // one
console.log(z); // three

    在上面的程序中,使用逗号分隔符 , 省略了第二个元素。

将剩余元素分配给单个变量

    您可以使用扩展语法将数组的剩余元素分配给变量…。例如,

const arrValue = ['one', 'two', 'three', 'four'];

// destructuring assignment in arrays
// assigning remaining elements to y
const [x, ...y] = arrValue;

console.log(x); // one
console.log(y); // ["two", "three", "four"]

    这里,one 被分配给 x 变量。其余的数组元素被分配给 y 变量。
    您还可以将对象其余的属性指定给单个变量。例如,

const person = {
    name: 'Sara',
    age: 25,
    gender: 'female'    
}

// destructuring assignment
// assigning remaining properties to rest
let { name, ...rest } = person;

console.log(name); // Sara
console.log(rest); // {age: 25, gender: "female"}

    注意:具有扩展语法的变量不能有尾随逗号,。您可以将这个rest元素(带有扩展语法的变量)作为最后一个变量。
    例如,

const arrValue = ['one', 'two', 'three', 'four'];

// throws an error
const [ ...x, y] = arrValue;

console.log(x); // eror

嵌套解构赋值

    您可以对数组元素执行嵌套解构。例如,

// nested array elements
const arrValue = ['one', ['two', 'three']];

// nested destructuring assignment in arrays
const [x, [y, z]] = arrValue;

console.log(x); // one
console.log(y); // two
console.log(z); // three

    在这里,变量 y 和 z 被指定为嵌套元素 two 和 three。
    为了执行嵌套的解构赋值,必须将变量包含在数组结构中(通过将变量包含在 [] 中)。
    您还可以对对象属性执行嵌套解构。例如,

const person = {
    name: 'Jack',
    age: 26,
    hobbies: {
        read: true,
        playGame: true
    }
}
// nested destructuring 
const {name, hobbies: {read, playGame}} = person;

console.log(name); // Jack
console.log(read); // true
console.log(playGame); // true

    为了对对象执行嵌套的解构赋值,必须将变量封装在对象结构中(通过在 { } 内封装)。
    注意:解构赋值特性是在ES6中引入的。一些浏览器可能不支持使用解构赋值。访问Javascript 解构支持以了解更多信息。

    上一教程JS Set                                          下一教程JS Classes

参考文档

[1] Parewa Labs Pvt. Ltd. (2022, January 1). Getting Started With JavaScript, from Parewa Labs Pvt. Ltd: https://www.programiz.com/javascript/destructuring-assignment

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/234890.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • AbstractQueuedSynchronizer浅析「建议收藏」

    AbstractQueuedSynchronizer浅析「建议收藏」文章目录简介如何实现自定义同步器实现分析1.publicfinalvoidacquire(intarg)该方法以排他的方式获取锁,对中断不敏感,完成synchronized语义。简介这是一个抽象类,提供了一个FIFO(先进先出的队列),可以用来构建锁或者其他同步装置的基础框架。该同步器利用intstate来表示一个状态。子类通过继续该抽象类并实现他的方法来管理其状态,管理方式是通过acquire(intarg)方法release(intarg)方法来操作状态。多线程环境中对状

    2022年9月25日
    0
  • [gdc15]<暗黑破坏神3>中的合作模式设计

    [gdc15]<暗黑破坏神3>中的合作模式设计本文中,kevin老师分享暗黑设计团队从游戏的早期一直到现在夺魂之镰资料片,一路过来的探索,纠结和沉淀。最后能逐渐把设计做的更好(有的地方大幅度的简化,不纠结,有些地方则有所增强),kevin老师建立在对于D3本质的认知上,产生了一系列的哲学和原则。

    2022年6月2日
    37
  • combox数据绑定_props父子传值

    combox数据绑定_props父子传值combox可以接受dataset对象作为其数据源。所以,combox.datasource=dataset1;是可以的。 但是在WPF中,combox不支持DataSource方法。可以通过下面的方法添加数据。foreach(datarowdrindataset1.tables[0].rows){combox1.items.add(dr.items[0

    2022年10月30日
    0
  • rpa是干什么的_rpa是什么技术

    rpa是干什么的_rpa是什么技术作者:影刀RPA链接:https://www.zhihu.com/question/382742683/answer/1367045898来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。RPA是什么?一句话让你明白这个技术是什么,一种模拟电脑鼠标键盘操作且可以代替人进行重复性、规则化电脑端操作的技术,展开想象会发现能够应用在公司各个部门各个业务线,简单整理如下:感觉还是很迷糊?钉钉跟客户发不同的消息内容(0编码4分钟完成)影刀RPA的..

    2022年9月10日
    0
  • 钱包地址 私钥_eth私钥就是收款地址吗

    钱包地址 私钥_eth私钥就是收款地址吗网上看到一个对比,很形象,可以用来加强理解:地址=银行卡卡号密码=银行卡密码keystore=银行卡助记词=私钥=银行卡+银行卡密码Keystore+密码=银

    2022年8月1日
    6
  • thinkphp 本地配置手机移动端,在pc端访问手机端

    thinkphp 本地配置手机移动端,在pc端访问手机端

    2021年10月16日
    32

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号