您现在的位置是:首页 > 编程 > 

es6解构赋值的几个用法

2025-07-28 09:33:45
es6解构赋值的几个用法 1.解构赋值可以轻松获取对象或者数组中的数据代码语言:javascript代码运行次数:0运行复制var jsonData = {data: "111",data2: ["test","test2"],  };json中的数据就被轻松获取;2.解构复制可以交换变量代码语言:javascript代码运行次数:0运行

es6解构赋值的几个用法

1.解构赋值可以轻松获取对象或者数组中的数据

代码语言:javascript代码运行次数:0运行复制
var jsonData = {data: "111",data2: ["test","test2"],  };

json中的数据就被轻松获取;

2.解构复制可以交换变量

代码语言:javascript代码运行次数:0运行复制
var a=1,b=2,c=,d=4;[a,b,c,d]=[d,c,b,a];cole.log(a,b,c,d);

结果: a=4,b=,c=2,d=1

赋值的过程需要保证两边的数据格式匹配

[a,b,c,d]=[d,c,b,];

d的值将为underfinded

.对象的解构赋值

代码语言:javascript代码运行次数:0运行复制
let {obj, obj2 } = { obj: "666", obj2: "888" };cole.log(obj,obj2)

结果,666,888

数组解构

让我们一起先来看数组解构的基本用法:

代码语言:javascript代码运行次数:0运行复制
let [a, b, c] = [1, 2, ] // a=1, b=2, c=let [d, [e], f] = [1, [2], ] // 嵌套数组解构 d=1, e=2, f=let [g, ...h] = [1, 2, ] // 数组拆分 g=1, h=[2, ]let [i,,j] = [1, 2, ] // 不连续解构 i=1, j=let [k,l] = [1, 2, ] // 不完全解构 k=1, l=2

对象解构

接下来再让我们一起看看对象解构的基本用法:

代码语言:javascript代码运行次数:0运行复制
let {a, b} = {a: 'aaaa', b: 'bbbb'} // a='aaaa' b='bbbb'let obj = {d: 'aaaa', e: {f: 'bbbb'}}let {d, e:{f}} = obj // 嵌套解构 d='aaaa' f='bbbb'let g;(g = {g: 'aaaa'}) // 以声明变量解构 g='aaaa'let [h, i, j, k] = 'nice' // 字符串解构 h='n' i='i' j='c' k='e'
使用场景

1.变量赋值

我们先来看最基本的使用场景:变量赋值,先来看我们在平时开发中是怎么使用es5对变量赋值的:

代码语言:javascript代码运行次数:0运行复制
var data = {userame: 'aaaa', password: 12456}var userame = data.useramevar password = data.passwordcole.log(userame)cole.log(password)var data1 = ['aaaa', 12456]var userame1 = data1[0]var password1 = data1[1]cole.log(userame1)cole.log(password1)

上面两个例子是最简单的例子,用传统es5变量赋值,然后调用,这么写的问题就是显得代码啰嗦,明明一行可以搞定的事情非要用三行代码,来看看解构赋值是怎么干的:

代码语言:javascript代码运行次数:0运行复制
ct {userame, password} = {userame: 'aaaa', password: 12456}cole.log(userame)cole.log(password)ct [userame1, password1] = ['aaaa', 12456]cole.log(userame1)cole.log(password1)

相对于es5的语法是不是更加简单明了,在数据量越大用解构赋值的优势越明显

2.函数参数的定义

一般我们在定义函数的时候,如果函数有多个参数时,在es5语法中函数调用时参数必须一一对应,否则就会出现赋值错误的情况,来看一个例子:

代码语言:javascript代码运行次数:0运行复制
function personInfo(name, age, address, gender) {  cole.log(name, age, address, gender)}personInfo('william', 18, 'changsha', 'man')

上面这个例子在对用户信息的时候需要传递四个参数,且需要一一对应,这样就会极易出现参数顺序传错的情况,从而导致bug,接下来来看es6解构赋值是怎么解决这个问题的:

代码语言:javascript代码运行次数:0运行复制
function personInfo({name, age, address, gender}) {cole.log(name, age, address, gender)}personInfo({gender: 'man', address: 'changsha', name: 'william', age: 18})

这么写我们只需要知道要传什么参数就行来,不需要知道参数的顺序也没问题

.交换变量的值

在es5中我们需要交换两个变量的值需要借助临时变量的帮助,来看一个例子:

代码语言:javascript代码运行次数:0运行复制
var a=1, b=2, cc = aa = bb = ccole.log(a, b)

来看es6怎么实现:

代码语言:javascript代码运行次数:0运行复制
let a=1, b=2;[b, a] = [a, b]cole.log(a, b)

是不是比es5的写法更加方便呢?

4.函数的默认参数

在日常开发中,经常会有这种情况:函数的参数需要默认值,如果没有默认值在使用的时候就会报错,来看es5中是怎么做的:

代码语言:javascript代码运行次数:0运行复制
function saveInfo(name, age, address, gender) {name = name || 'william'age = age || 18address = address || 'changsha'gender = gender || 'man'cole.log(name, age, address, gender)}saveInfo()

在函数离 main先对参数做一个默认值赋值,然后再使用避免使用的过程中报错,再来看es6中的使用的方法:

代码语言:javascript代码运行次数:0运行复制
function saveInfo({name= 'william', age= 18, address= 'changsha', gender= 'man'} = {}) {cole.log(name, age, address, gender)}saveInfo()

在函数定义的时候就定义了默认参数,这样就免了后面给参数赋值默认值的过程,是不是看起来简单多了

5.提取 JSO 数据

代码语言:javascript代码运行次数:0运行复制
let jsonData = {id: 42,status: "OK",data: [867, 509]};let { id, status, data: number } = jsonData;cole.log(id, status, number);// 42, "OK", [867, 509]

6.遍历 Map 结构

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

代码语言:javascript代码运行次数:0运行复制
ct map = new Map();map.set('first', 'hello');map.set('second', 'world');for (let [key, value] of map) {cole.log(key + " is " + value);}// first is hello// second is world

如果只想获取键名,或者只想获取键值,可以写成下面这样。

代码语言:javascript代码运行次数:0运行复制
// 获取键名for (let [key] of map) {// ...}// 获取键值for (let [,value] of map) {// ...}

7.输入模块的指定方法

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

代码语言:javascript代码运行次数:0运行复制
ct { SourceMapCumer, Sourceode } = require("source-map");
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2021-01-09,如有侵权请联系 cloudcommunity@tencent 删除函数数据数组变量对象

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1249870.html

相关标签:无
上传时间: 2025-07-27 16:38:22
留言与评论(共有 14 条评论)
本站网友 异常分娩
2分钟前 发表
gender}) {cole.log(name
本站网友 颌面部整形
29分钟前 发表
先来看我们在平时开发中是怎么使用es5对变量赋值的:代码语言:javascript代码运行次数:0运行复制var data = {userame
本站网友 executenonquery
15分钟前 发表
{f}} = obj // 嵌套解构 d='aaaa' f='bbbb'let g;(g = {g
本站网友 龙安租房
27分钟前 发表
2
本站网友 石菖蒲的副作用
16分钟前 发表
先来看我们在平时开发中是怎么使用es5对变量赋值的:代码语言:javascript代码运行次数:0运行复制var data = {userame
本站网友 东莞电信局
16分钟前 发表
是不是看起来简单多了5.提取 JSO 数据代码语言:javascript代码运行次数:0运行复制let jsonData = {id
本站网友 别墅装修效果图
22分钟前 发表
'changsha'
本站网友 ctx
4分钟前 发表
name
本站网友 39度
29分钟前 发表
password
本站网友 购房契税
24分钟前 发表
12456}cole.log(userame)cole.log(password)ct [userame1
本站网友 桂枝功效与作用
3分钟前 发表
b
本站网友 一分钟快速拉屎
5分钟前 发表
gender)}personInfo({gender
本站网友 贷帮
2分钟前 发表
l=2对象解构接下来再让我们一起看看对象解构的基本用法:代码语言:javascript代码运行次数:0运行复制let {a