解构赋值的用途

所谓解构赋值,就是允许按照一定模式,从对象和数组从提取值,对变量进行赋值,这就是解构赋值。

注意:这里只能对数组和对象进行解构赋值。

//数组的解构赋值
let a,b,rest;
[a,b] = [1,2];
[a,b,...rest] = [1,2,3,4,5];
//对象的解构赋值

({a,b} = {a:1,b:2});
({a,b,...rest} = {a:1,b:2,c:3,d:4})

//注意:rest必须是解构赋值参数列表的最后一个参数
let [foo,[[bar],baz]] = [1,[[2],3]];
let [x,y=‘b‘] = [‘dd‘,undefined];
let [a,b,c] = new Set(["f","ff","fff"]);

对于数组进行解构赋值,只要某种数据解构具有Iterator接口,都可以采用数组形式进行解构赋值。

对于对象进行解构赋值,要注意书写的形式。

//错误的写法
var x;
{x} = {x:1};//error

这里因为声明了x变量,{x}放在开头,会被JavaScript引擎解释成代码块。

可以对解构赋值的语句加上圆括号。

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

不仅可以对数组和对象进行解构赋值,还可以对字符串、数值和布尔值、函数参数进行解构赋值。

对字符串进行解构赋值、

const [a,b,c] = ‘hel‘;

之所以能够进行解构赋值,因为此时字符串被转换成了一个类似数组的对象。

解构赋值的规则:

只要等号右边的值不是对象,先将其转化成对象,由于undefined和null无法转化成对象,所以对它们进行解构赋值都会报错。

解构赋值的用途:

  • 变换变量:交换两个变量的值
  • 解析一个从函数返回的数组:有了解构赋值,函数可以返回多个值,但是现在有更多的灵活性。
  • 忽略某些返回值
  • 将剩余数组赋值给一个变量
  • 用正则表达式匹配提取值
  • 函数参数的定义
  • 提取JSON数据

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

var jsonData = {
    id:42,
    status: "ok",
    data:[74,444]
}
let {id,status,data:number} = jsonData;
console.log(id,status,number);
//42,ok,[74,444]
  • 遍历Map结构

    任何部署了Iterator接口的对象,都可以用for...of循环遍历,Map解构原生支持Iterator接口,配合变量的解构赋值,获取键名和健值就非常方便。

var map = new Map();
map.set(‘first‘,‘hello‘);
map.set(‘second‘,‘world‘);
for (let [key,value] of map){
    console.log(key+"is"+value);
}
//first is hello
//second is world

//只想获取键名
for(let [key] of map){
    //...
}

//获取键值
for(let [,value] of map){
    //...
}
  • 输入模块的指定方法

    加载模块时,往往需要指定输入哪些方法,解构赋值使得输入语句很清晰

const {SourceMapConsumer,SourceNode} = require("source-map")

总结:

从解构赋值的定义说到解析的规则,还有一些很好用的用途。以后有新的发现再来补充。

原文地址:https://www.cnblogs.com/sminocence/p/8451273.html

时间: 2024-08-22 10:44:14

解构赋值的用途的相关文章

(6)解构赋值的用途

解构赋值的用途1.交换变量的值 var a = 100; var b = 200; var t; t = a; a = b; b = t; //解构赋值的写法完成[ES6交换变量的值] var x = 100; var y = 200; [x, y] = [y, x]; console.log(x); console.log(y); 优点1:直观 优点2:一一对应 优点3:节省内存空间(不用多申请变量) 2.从函数返回多个值 3.函数参数的定义4.提取json数据5.函数参数的默认值6.遍历Ma

es6变量解构赋值的用途

这里是我觉得es6解构赋值,在平时我们写js的时候非常有用,而且经常用到的地方,能简化我们的代码,让写代码简介优雅易读; 用途 1.交换变量的值,太方便了这逼,写法不仅简介而且一看就明白 let [x,y]=[1,2]; [x,y]=[y,x]; console.log(x);//输出2 console.log(y);//输出1 2.从函数返回多个值 函数只能返回一个值,如果要返回多个值,只能将它们放在数组或者对象里面返回.有了解构赋值,取出这些值那是非常的方便,最关键是易读 function

001-es6变量声明、解构赋值、解构赋值主要用途

一.基本语法 1.1.声明变量的六种方法 参看地址:http://es6.ruanyifeng.com/#docs/let let:局部变量,块级作用域,声明前使用报错 var:全局变量,声明前使用 undefined const:声明一个只读的常量.一旦声明,常量的值就不能改变.只是内存地址不变,如果是对象,内存不变属性对应的值可变 function: import: class: 1.2.变量解构赋值 参看地址:http://es6.ruanyifeng.com/#docs/destruct

ECMAScript中变量的解构赋值

ES6 允许从数组和对象中提取值,对变量进行赋值. 解构赋值的基本用法: 1.数组的解构赋值 let [a, b, c]= [1,2, 3]; console.log(a);//1 console.log(b);//2 console.log(c);//3 2.对象的解构赋值 let { foo:foo2, bar:bar2 } = {foo: "aaa",bar: "bbb" }; console.log(foo2);// "aaa" cons

3. 变量的解构赋值

目录 一. 数组的解构赋值 二. 对象的解构赋值 三. 字符串的解构赋值 四. 布尔和数值的解构赋值 五. 函数的解构赋值 六. 用途 总结 一. 数组的解构赋值 ES6允许按照一定的模式,从数组和对象中提取值,对变量进行赋值,这被称为解构 模式匹配:本质上,这种写法属于模式匹配,只要等号两边的模式相同,左边的变量就会被赋予相应的值 如果解构不成功(即左边的值在右边找不到对应的),则返回undefined 如果等号右边的不是数组(或者说不是可遍历的解构),那么将会报错 默认值,解析赋值允许执行默

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

前言 在上一章 ES6入门之let和const命令中我们对ES6的相关语法已经有了初步了解,上一章中我们主要学习了三大部分的内容,let命令的使用,块级作用域,const命令的使用,那么从本篇博客将进一步深入了解ES6中的相关语法,毕竟未来ES6是主流. 本章目标 学会数组的解构赋值 学会对象的解构赋值 学会字符串的解构赋值 学会数值和布尔值的解构赋值 学会函数参数的解构赋值 学会解构赋值的用途 本人对解构赋值的理解:模式匹配,匹配成功获取值,匹配不成功则为undefined,好比开心消消乐一样

ES6 解构赋值用途

1.交换变量的值2.从函数返回多个值3.函数参数的定义4.提取json数据5.函数参数的默认值6.遍历Map结构7.输入模块的指定方法   1.交换变量的值 // es5 console.log("es5"); var a = 100; var b = 200; var temp; temp = a; a = b; b = temp; console.log(a, b) // es6 console.log("es6") var x = 1000, y = 2000

es6学习 -- 解构赋值

ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 以前,为变量赋值,只能直接指定值. let a = 1; let b = 2; let c = 3; ES6 允许写成下面这样. let [a, b, c] = [1, 2, 3]; 上面代码表示,可以从数组中提取值,按照对应位置,对变量赋值. 本质上,这种写法属于"模式匹配",只要等号两边的模式相同,左边的变量就会被赋予对应的值.下面是一些使用嵌套数组进行解构的例子. 我认为

ES6(二)解构赋值+字符串的扩展

详解一下之前的解构赋值 ①解构赋值中的"..." let [a,...b]= [1]; b // [] ...代表变量b去匹配剩余的所有元素返回一个数组 ,匹配不到时返回[] //注意:"...b"只能放在最后 ②解构赋值的等号两边的数据类型必须一样 即: let [] = [] 或者 let {} = {} 但是:Set结构也允许使用数组进行解构赋值 let [a,b]= new Set([1,2,3,4]) a //1 b //2 技巧: 如果你不确定该结构是否