深入理解 ES6 的解构表达式

还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,echarts等技术开发,欢迎加底部微信(gis-dajianshi),一起交流。

在这里插入图片描述

No.大剑师精品GIS教程推荐
0地图渲染基础- 【WebGL 教程】 - 【Canvas 教程】 - 【SVG 教程】
1Openlayers 【入门教程】 - 【源代码+示例 300+】
2Leaflet 【入门教程】 - 【源代码+图文示例 150+】
3MapboxGL【入门教程】 - 【源代码+图文示例150+】
4Cesium 【入门教程】 - 【源代码+综合教程 200+】
5threejs【中文API】 - 【源代码+图文示例200+】
6Shader 编程 【图文示例 100+】
7Geoserver 【配置教程 100+】
8卫星应用开发教程 【配置+应用教程 100+】
9GIS数字孪生与大模型 【应用实战 100+】
10报表与数字大屏 【Echarts 实战示例】 - 【D3 综合教程】 - 【其他大屏】


在这里插入图片描述

ES6 的解构赋值(Destructuring Assignment)是一种新的声明和提取数组或对象属性的简洁方式,它允许我们从数组或对象中提取值并将这些值赋给相应的变量。这种方式简化了变量赋值和参数传递的过程,提高了代码的可读性和便利性。

一、 数组解构赋值

示例代码:
// 从数组中解构赋值
let [a, b, c] = [1, 2, 3];
console.log(a, b, c); // 输出:1 2 3

// 默认值
let [x = 'default', y = 'fallback'] = [1];
console.log(x, y); // 输出:1 fallback

// 解构剩余部分
let [first, ...rest] = [1, 2, 3, 4, 5];
console.log(first); // 输出:1
console.log(rest); // 输出:[2, 3, 4, 5]

// 解构嵌套数组
let [head, [nested1, nested2]] = [1, [2, 3]];
console.log(head, nested1, nested2); // 输出:1 2 3

二、对象解构赋值

示例代码:
// 从对象中解构赋值
let { firstName: fn, lastName: ln } = { firstName: 'Alice', lastName: 'Smith' };
console.log(fn, ln); // 输出:Alice Smith

// 如果对象没有该属性,可以通过默认值赋值
let { color = 'red' } = {};
console.log(color); // 输出:red

// 直接解构赋值给同名变量
let { firstName, lastName } = { firstName: 'Bob', lastName: 'Johnson' };
console.log(firstName, lastName); // 输出:Bob Johnson

// 解构嵌套对象
let obj = { profile: { name: 'Tom', age: 25 } };
let { profile: { name, age } } = obj;
console.log(name, age); // 输出:Tom 25

// 非必须存在的属性,可以放在单独的圆括号中
let { a, b, c } = { a: 1, b: 2 };
({ c } = { c: 3 }); // 不报错,即使c不在原始对象中
console.log(a, b, c); // 输出:1 2 3

三、应用场景

  • 交换两个变量的值无需临时变量:
let x = 1, y = 2;
[x, y] = [y, x];
console.log(x, y); // 输出:2 1
  • 函数参数的简化:
function processOptions({ width = 800, height = 600, title }) {
  // ...
}
processOptions({ title: 'My App', height: 400 });
  • 函数返回多个值时的便捷处理:
function fetchInfo() {
  return [1, 2, 3];
}

let [info1, info2, info3] = fetchInfo();
  • 处理 JSON 数据或 API 回调:
let jsonData = { id: 1, name: 'John Doe' };
let { id, name } = jsonData;
console.log(id, name); // 输出:1 John Doe
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

还是大剑师兰特

打赏一杯可口可乐

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值