首页前端开发JavaScript带你了解JavaScript解构赋值

带你了解JavaScript解构赋值

时间2024-01-31 07:14:03发布访客分类JavaScript浏览514
导读:收集整理的这篇文章主要介绍了带你了解JavaScript解构赋值,觉得挺不错的,现在分享给大家,也给大家做个参考。本篇文章给大家带来了关于javascript的相关知识,其中主要介绍了关于解构赋值的相关问题,包括了数组解构、对象结构以及解构...
收集整理的这篇文章主要介绍了带你了解JavaScript解构赋值,觉得挺不错的,现在分享给大家,也给大家做个参考。本篇文章给大家带来了关于javascript的相关知识,其中主要介绍了关于解构赋值的相关问题,包括了数组解构、对象结构以及解构的用途等等,希望对大家有帮助。

相关推荐:javascript学习教程

概念

ES6提供了更简洁的赋值模式,从数组和对象中提取值,这被称为解构

示例:

[a, b] = [50, 100];
    console.LOG(a);
    // expected output: 50console.log(b);
    // exPEcted output: 100[a, b, ...rest] = [10, 20, 30, 40, 50];
    console.log(rest);
    // expected output: [30, 40, 50]

数组解构

数组解构是非常简单简洁的,在赋值表达式的左侧使用数组字面量,数组字面量中的每个变量名称映射为解构数组的相同索引项

这是什么意思呢,就是如下面这个示例一样,左边数组中的项分别得到了右侧解构数组相应索引的值

let [a, b, c] = [1, 2, 3];
    // a = 1// b = 2// c = 3

声明分别赋值

你可以通过变量声明分别解构赋值

示例:声明变量,分别赋值

// 声明变量let a, b;
    // 然后分别赋值[a, b] = [1, 2];
    console.log(a);
     // 1console.log(b);
     // 2

解构默认值

如果解构取出的值是undefined,可以设置默认值:

let a, b;
    // 设置默认值[a = 5, b = 7] = [1];
    console.log(a);
     // 1console.log(b);
     // 7

在上面的例子中,我们给a和b均设置了默认值
这种情况下,如果a或b的值是undefined,它将把设置的默认值赋给相应变量(5赋给a,7赋给b)

交换变量值

以往我们进行两个变量的交换,都是使用

//交换abc = a;
    a = b;
    b = c;
    

或者异或的方法

然而在解构赋值中,我们可以在一个解构表达式中交换两个变量值

let a = 1;
    let b = 3;
    //交换a和b的值[a, b] = [b, a];
    console.log(a);
     // 3console.log(b);
     // 1

解构函数返回的数组

我们可以直接解构一个返回值为数组的函数

function c() {
      return [10, 20];
}
    let a, b;
    [a, b] = c();
    console.log(a);
     // 10console.log(b);
     // 20

在上面的例子中,**c()**的返回值[10,20]可以在单独的同一行代码中使用解构

忽略返回值(或跳过某一项)

你可以有选择性的跳过一些不想得到的返回值

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

赋值数组剩余值给一个变量

当你使用数组解构时,你可以把赋值数组剩余的部分全部赋给一个变量

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

这样的话b也会变成一个数组了,数组中的项是剩余的所有项

注意:
这里要小心结尾是不能再写逗号的,如果多了一个逗号将会报错

let [a, ...b,] = [1, 2, 3];
    // SyntaxError: rest element may not have a trailing comma

嵌套数组解构

像对象一样,数组也可以进行嵌套解构

示例:

const color = ['#FF00FF', [255, 0, 255], 'rgb(255, 0, 255)'];
    // Use nested destructuring to assign red, green and blue// 使用嵌套解构赋值 red, green, blueconst [hex, [red, green, blue]] = color;
    console.log(hex, red, green, blue);
     // #FF00FF 255 0 255

字符串解构

在数组解构中,解构的目标若为可遍历对象,皆可进行解构赋值,可遍历对象即实现ITerator接口的数据

let [a, b, c, d, e] = 'hello';
    /*a = 'h'b = 'e'c = 'l'd = 'l'e = 'o'*/

对象解构

基础对象解构

let x = {
 y: 22, z: true }
    ;
let {
 y, z }
     = x;
 // let {
y:y,z:z}
     = x;
    的简写console.log(y);
     // 22console.log(z);
     // true

赋值给新变量名

当使用对象解构时可以改变变量的名称

let o = {
 p: 22, q: true }
    ;
let {
 p: foo, q: bar }
     = o;
    console.log(foo);
     // 22console.log(bar);
 // true

如上代码VAR { p: foo} = o 获取对象 o 的属性名 p,然后赋值给一个名称为 foo 的变量

解构默认值

如果解构取出的对象值是undefined,我们可以设置默认值

let {
 a = 10, b = 5 }
 = {
 a: 3 }
    ;
    console.log(a);
     // 3console.log(b);
     // 5

赋值给新对象名的同时提供默认值

前面提到过我们赋值给新的对象名,这里我们可以给这个新的对象名提供一个默认值,如果没有解构它,就会自动使用默认值

let {
 a: aa = 10, b: bb = 5 }
 = {
 a: 3 }
    ;
    console.log(aa);
     // 3console.log(bb);
     // 5

同时使用数组和对象解构

在结构中数组和对象可以一起使用

const PRops = [  {
 id: 1, name: 'Fizz' }
,  {
 id: 2, name: 'Buzz' }
,  {
 id: 3, name: 'FizzBuzz' }
    ,];
const [, , {
 name }
    ] = props;
    console.log(name);
     // "FizzBuzz"

不完全解构

let obj = {
p: [{
y: 'world'}
] }
    ;
let {
p: [{
 y }
, x ] }
     = obj;
    //不解构x// x = undefined// y = 'world'

赋值剩余值给一个对象

let {
a, b, ...rest}
 = {
a: 10, b: 20, c: 30, d: 40}
    ;
// a = 10// b = 20// rest = {
c: 30, d: 40}
    

嵌套对象解构(可忽略解构)

let obj = {
p: ['hello', {
y: 'world'}
] }
    ;
let {
p: [x, {
 y }
] }
     = obj;
// x = 'hello'// y = 'world'let obj = {
p: ['hello', {
y: 'world'}
] }
    ;
let {
p: [x, {
  }
] }
     = obj;
    //忽略y// x = 'hello'

注意事项

小心使用已声明变量进行解构

错误示范:

let x;
{
x}
 = {
x: 1}
    ;

JavaScript引擎会将{ x} 理解为一个代码块,从而产生语法错误,我们要避免将大括号写在行首,避免JavaScript将其解释为代码块
正确写法:

let x;
({
x}
 = {
x: 1}
    );
    

正确写法将整个解构赋值语句放在一个圆括号里,就可以正确执行了

函数参数的解构赋值

函数的参数也可以使用解构赋值

function add([x, y]) {
    	return x + y;
}
    add([1, 2]);
    

上面代码中,函数add的参数表面上是一个数组,但在传参的时候,数组参数就被解构为变量x和y了,对于函数内部来说,就和直接传入x和y是一样的

解构的用途

解构赋值的用法很多

交换变量的值

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

上面的代码交换x和y的值,这样的写法不仅简洁而且易读,语义清晰

从函数返回多个值

函数只能返回一个值,如果要返回多个值,我们只能将这些值放置数组或对象里返回,当我们有了解构赋值后,从对象或数组里取出这些值犹如探囊取物

// 返回一个数组function example() {
      return [1, 2, 3];
}
    let [a, b, c] = example();
  // 返回一个对象  function example() {
  return {
    foo: 1,    bar: 2  }
    ;
  }
let {
 foo, bar }
     = example();
    

提取JSON数据

解构赋值对于提取JSON对象中的数据,尤其有用

示例:

let jsonData = {
  id: 42,  status: "OK",  data: [867, 5309]}
    ;
let {
 id, status, data: number }
     = jsonData;
    console.log(id, status, number);
    // 42, "OK", [867, 5309]

使用上面的代码,我们就可以快速取出JSON数据中的值

相关推荐:javascript教程

以上就是带你了解JavaScript解构赋值的详细内容,更多请关注其它相关文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

上一篇: 浅析Node.js使用worker_threads多...下一篇:JavaScript中如何获取URL参数?4...猜你在找的JavaScript相关文章 html font标签如何设置字体大小?html font标签属性用法介绍2022-05-16vue3+TypeScript+vue-router的使用方法2022-04-16vue3获取当前路由地址2022-04-16如何利用React实现图片识别App2022-04-16JavaScript展开运算符和剩余运算符的区别详解2022-04-16微信小程序中使用vant框架的具体步骤2022-04-16Vue elementUI表单嵌套表格并对每行进行校验详解2022-04-16如何利用Typescript封装本地存储2022-04-16微信小程序中wxs文件的一些妙用分享2022-04-16JavaScript的Set数据结构详解2022-04-16 其他相关热搜词更多phpjavapython程序员loadpost-format-gallery

若转载请注明出处: 带你了解JavaScript解构赋值
本文地址: https://pptw.com/jishu/593646.html
字符串赋值是什么意思 javascript数据类型学习之浅析Symbol类型

游客 回复需填写必要信息