首页 > 其他分享 >解构赋值

解构赋值

时间:2024-04-26 14:33:05浏览次数:11  
标签:aa console log bb 解构 let 赋值

1.数组

let [a, b, c] = [12, 5, 6]    //右边是数据,左边是解构
cosole.log(a,b,c)  //12  5  6
let [a,b,c] = [12,[5,6]];  //右边是你的数据,左边是你的解构
console.log(a,b,c);   // 12, [5,6], undefined


//如果希望数据对应,则需要结构一样
let [a,[b,c]] = [12,[5,6]];
console.log(a,b,c);   //12 5 6

let [foo, [[bar], baz]] = [1, [[2], 3]];
foo // 1
bar // 2
baz // 3

let [ , , third] = ["foo", "bar", "baz"];
third // "baz"

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

关于默认值:

let [a,b,c = "暂无数据"] = ["aa","bb"];  
console.log(a,b,c);    //aa bb 暂无数据

// 如果有值,就使用后台的值
let [a,b,c = "暂无数据"] = ["aa","bb","cc"];  
console.log(a,b,c);    // aa bb cc

// 如果后台穿过来的是undefined,还是表示没有值,用默认值,
let [a,b,c = "暂无数据"] = ["aa","bb",undefined];  
console.log(a,b,c);    //aa bb 暂无数据

// 如果后台传过来的是一个null,表示有值,null表示一个空对象
let [a,b,c = "暂无数据"] = ["aa","bb",null];  
console.log(a,b,c);    //aa bb null

不完全结构:

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

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

//上面两个例子,都属于不完全解构,但是可以成功。

2.对象

let json = {
    name: "doudou",
    age: 18,
    sex: "男"
}
let {name,age,sex} = json;
console.log(name,age,sex);  // doudou 18 男
// 这里解构的属性名必须和对象的属性名相同,否则解不出来就全是undefined

let {nam,ag,se} = json;
console.log(nam,ag,se);  // undefined undefined undefined
// 如果想自己定义更改属性名可以如下操作

let {name:nam,age:ag,sex:se} = json; // 这样依然可以改属性名,并打印了解构的值
console.log(nam,ag,se);  //doudou 18 男

解构可用于嵌套结构

let obj = {
  p: [
    'Hello',
    { y: 'World' }
  ]
};

let { p: [x, { y }] } = obj;
x // "Hello"
y // "World"

标签:aa,console,log,bb,解构,let,赋值
From: https://www.cnblogs.com/zengyu123/p/18160006

相关文章

  • 声明和定义,初始化和赋值
    在学习C\C++的过程中有两组概念需要注意:声明(declarartion)和定义(definition)、初始化(initialization)和赋值(assginment)。C语言中初始化和赋值可以认为是一样的,但在C++中这两个是不同的概念。/* 定义和声明 */inti; //全局变量同时声明和定义i和jintj=10;exte......
  • delete/声明语句/赋值操作
    deletevarx1={a:1}x1=>{a:1}deletex1=>falsewindow.x2={a:1}x2=>{a:1}deletex2=>truevar声明的全局变量和使用let或const声明的全局变量都不能被delete删除,因为它们都是不可配置的。只有直接在全局对象上设置的属性才可以被delete成功删除。delete运......
  • codegen的模板文件mustache中,classname,description,notes如何赋值
    Swagger-codegen的模板文件mustacheSwagger-codegen是一个开源的代码生成工具,它可以根据Swagger规范自动生成客户端和服务器端代码。在使用Swagger-codegen时,我们可以通过mustache模板文件来自定义生成的代码。在这篇文章中,我们将介绍如何在mustache模板文件中给classname、descr......
  • layUI select下拉框动态赋值和设置选中值
    layUIselect下拉框动态赋值和设置选中值<script>layui.use(['form','layedit','laydate'],function(){var$=layui.jquery;$.ajax({url:'../api/SysType/GetArticleType?parentId=1',//json文......
  • scanf 中给 double 用 %f 时赋值异常, float lf, char s 同理
    结论scanf的变量要匹配对应的格式化字符串。floatf,doublelf,charc编译器提示的错误要消除,不消除不能运行;同时尽量消除警告doublefc语言中,给double类型的变量用scanf%f输入赋值时,会发生逻辑上的错误,请看代码#include<stdio.h>intmain(){doublevalue......
  • Java创建数组、赋值的四种方式,声明+创建+初始化 详解
    Java创建数组、赋值的四种方式,声明+创建+初始化详解@目录一、创建数组的四种方式二、详解三、数组存储的弊端一、创建数组的四种方式以int数据类型为例@TestpublicvoidtestNewArray(){//创建数组//法一int[]arr1=newint[]{1,2,3,4,5};System.ou......
  • # C++之STL整理(7)之queue用法(创建、赋值、增删查改)详解
    C++之STL整理(7)之queue用法(创建、赋值、增删查改)详解注:整理一些突然学到的C++知识,随时mark一下例如:忘记的关键字用法,新关键字,新数据结构C++的queue用法整理C++之STL整理(7)之queue用法(创建、赋值、增删查改)详解queue1.queue构造函数2.queue存取、插入和删除操作3.......
  • 为什么C++中不能将数组的内容拷贝给其他数组作为初始值,也不能用数组给其他数组赋值
    0前言来自primer的3.5部分以下写法是有问题的inta[]={0,1,2}inta2[]=a;//错误,不允许使用一个数组初始化另一个数组a2=a;//错误:不能把一个数组赋值给另一个数组有些编译器支持上面的操作,但是书上说这属于非标准功能,是编译器扩展1原因C++中的数组......
  • 【Kotlin】运算符函数、解构函数、中缀函数
    1一元运算符函数1.1符号和函数符号函数+aa.unaryPlus()-aa.unaryMinus()!aa.not()a++a.dec()a--a.inc()1.2案例funmain(){varstu=Student("Tom",13)println(-stu)//打印:[moT,31]}classStudent(varname:String,va......
  • C++要点细细梳理——trivial:运算符优先级、switch、临时变量默认赋值等
    1.运算符优先级在C语言中,运算符的优先级决定了在表达式中各个运算符的执行顺序。当一个表达式中有多个运算符时,优先级高的运算符会先被计算。如果两个运算符的优先级相同,那么它们的结合性(从左到右或从右到左)会决定它们的计算顺序。以下是一些基本的C语言运算符优先级(从......