前言:

让我们看下es6的新语法解构,跟模式匹配类似。
一、数组的解构赋值

举个例子给多个变量赋值的写法:

var a =1;
var b =2;
var c =3;

需要写多个变量特别麻烦,我们先使用以前的简化方法。

var a=1,b=2,c=3;

现在es6引入了解构,我们可以使用数组的解构赋值来更简便的进行赋值。
1、完全解构

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

可以从数组中提取值,按照对应位置,对变量赋值。本质上,这种写法属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值。
接下来,我们再举几个例子:

// 1、一一对应
let [,v]=[,1];
console.log(v) // 1
// 2、可以利用扩展符合并数组项
let [a,…b]=[1,2,3];
console.log(a) // 1
console.log(b) //[2,3]
// 3、如果左边不能一一对应右边的话,使用扩展符并且位置在末尾时,打印的为空数组,c没有对应,则是undefined;
let [a,c,…b]=[1];
console.log(a); // 1
console.log(b); // []
console.log; // undefined
// 4、如果没有一一对应的情况下,扩展符在中间,就会出错 let [a,...b,d,c]=[1];这种情况也一样
let [a,…b,c]=[1];
// Uncaught SyntaxError: Rest element must be last element

如果解构不成功,变量的值就等于undefined。在第4种情况中,我们把…b的位置放在中间,就会出错,而放在末尾只是打印空数组。

我们再举几个实际用到的例子,比如说交换值。以前交换值必须再声明定义一个变量,就像这样。

var a = 10;
var b = 20;
var temp = a;
a = b;
b = temp;

看起来,比较绕而且代码长,现在我们使用了es6的解构,可以这样。

let a = 10;
let b = 20;
[a,b] = [b,a];

2、不完全结构

接下来,我们来看下一个特殊的例子,叫做不完全解构。就是等号左边的模式,只匹配一部分的等号右边的数组

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

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

3、默认值

let [x, y = 'b'] = ['a', 'c'];
console.log(y) // 'c'
let [x, y = 'b'] = ['a'];
console.log(y) // 'b'
let [x, y = 'b'] = ['a', undefined];
console.log(y) // 'b'

更多内容请见原文,原文转载自:https://blog.csdn.net/weixin_44519496/article/details/119862313

《ECMAScript 6 入门》【二、变量的解构赋值】(持续更新中……)的更多相关文章

  1. ECMAScript 6 入门之变量的解构赋值

    1.数组 1. var a=1,b=2,c=3; console.log("a:",a) console.log("b:",b) console.log(&qu ...

  2. ES6入门之变量的解构赋值(二)

    前言 在上一章 ES6入门之let和const命令中我们对ES6的相关语法已经有了初步了解,上一章中我们主要学习了三大部分的内容,let命令的使用,块级作用域,const命令的使用,那么从本篇博客将进 ...

  3. ES6标准入门之变量的解构赋值简单解说

    首先我们来看一看解构的概念,在ES6标准下,允许按照一定模式从数组和对象中提取值,然后对变量进行赋值,这被称作解构,简而言之粗糙的理解就是变相赋值. 解构赋值的规则是,只要等号右边的值不是对象或者数组 ...

  4. ES6之主要知识点(二) 变量的解构赋值。默认值

    引自http://es6.ruanyifeng.com/#docs/destructuring 数组解构赋值 默认值 对象解构赋值 用途 1.数组的解构赋值 let [a, b, c] = [1, 2 ...

  5. ECMAScript 6入门 - 变量的解构赋值

    定义 ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 解构赋值不仅适用于var命令,也适用于let和const命令. 解构赋值的规则是,只要 ...

  6. 《ES6标准入门》(阮一峰)--3.变量的解构赋值

    1.数组的解构赋值 基本用法 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 以前,为变量赋值,只能直接指定值. let a = 1; l ...

  7. ECMAScript 6之变量的解构赋值

    1,数组的解构赋值 基本用法 ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 以前,为变量赋值,只能直接指定值. var a = 1; va ...

  8. ECMAScript6 入门教程记录 变量的解构赋值

    (1)变量的解构赋值 基本用法:ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). let a = 1; let b = 2; let c = ...

  9. ES6入门——变量的解构赋值

    1.数组的解构赋值 以前为变量复制,只能直接指定值.现在ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 本质上,这种写法属于模式匹配,只要等 ...

  10. ES6标准入门 第三章:变量的解构赋值

    解构赋值:从数组和对象中提取值,对变量进行赋值. 本质上,这种写法属于“匹配模式”:只要等号两边的模式相同,左边的变量就会被赋予对应的值. 1.数组的结解构赋值 基本用法 let [foo, [[ba ...

随机推荐

  1. 我们可以定向调度某个pod在某个node上进行创建

    集群环境:1.k8s用的是二进制方式安装 2.操作系统是linux (centos)3.操作系统版本为 7.2/7.4/7.94.k8s的应用管理.node管理.pod管理等用rancher.k8s令 ...

  2. MySQL5.6复制技术

    mysql复制功能介绍 我们可以通过为服务器配置主从即一个或多个备库的方式,以及主主结构来进行数据同步,将MySQL的数据分布到多个系统上去.复制过程中一台主库(master)服务器可以数据被同步到多 ...

  3. python数据类型内置的方法

    数据类型的内置方法 在日常生活中不同类型的数据具有不同的功能 eg:表格数据文件具有处理表格的各项功能(透视表 图形化 公式计算) 视频数据文件具有快进 加速等各项功能 ... 1.整型int # 方 ...

  4. 论文解读(S^3-CL)《Structural and Semantic Contrastive Learning for Self-supervised Node Representation Learning》

    论文信息 论文标题:Structural and Semantic Contrastive Learning for Self-supervised Node Representation Learn ...

  5. Azure Virtual Desktop(一)创建配置管理

    一,引言 Azure 虚拟创面是一项 Azure 服务,可以让我们管理: 1)VDI(虚拟桌面基础架构) 2)云端的 RDSH:RDSH 是 RDS(远程桌面服务)中的一个角色.这些类型的服务器用于托 ...

  6. SpringMVC踩坑3——前后端传值问题

    在前端页面点击修改,同时把需要修改的ID传到后端,后端根据ID去修改具体数据 这是前端代码 <a href="${pageContext.request.contextPath}/bo ...

  7. jquery版本的ajax请求

    首先引入 <script src="https://code.jquery.com/jquery-3.6.0.js"></script>   $ 和 jqu ...

  8. go - 内存分配机制详解

    一般程序的内存分配,从高位到低位依次为 全局静态区:用于存储全局变量.静态变量等:这部分内存在程序编译时已经分配好,由操作系统管理,速度快,不易出错. 栈:函数中的基础类型的局部变量:由程序进行系统调 ...

  9. HCIE笔记-第八节-传输层协议

    传输层:实现"端到端"的服务 应用到应用 端口 = port [逻辑端口] 基于应用级别的互访,就是 端口到端口的互访. 传输层 = 0-65535[端口范围] === TCP/U ...

  10. Android四大组件——Activity——Activity的生命周期

    Activity状态: 每个Activity在其生命周期中最多可能有四种状态 1.运行状态:处于栈顶时.初次创建处于栈顶时依次调用:onCreate(),onStart(),onResume().由不 ...