JavaScript 解构赋值

什么是解构赋值?

解构赋值是一种 JavaScript 表达式,允许我们从数组或对象中提取数据,并赋值给不同的变量。 解构赋值是 ES6 的强大特性,可以简化代码。

数组解构示例:

javascript 复制代码
// 基本用法
const arr = [1, 2, 3];
const [a, b, c] = arr;
console.log(a, b, c); // 1 2 3

// 只解构部分元素
const [first, second] = [10, 20, 30, 40];
console.log(first, second); // 10 20

// 跳过某些元素
const [x, , z] = [1, 2, 3];
console.log(x, z); // 1 3

// 设置默认值
const [p = 5, q = 10] = [1];
console.log(p, q); // 1 10(q使用默认值)

// 剩余元素
const [head, ...tail] = [1, 2, 3, 4, 5];
console.log(head); // 1
console.log(tail); // [2, 3, 4, 5]

// 变量交换(经典用法)
let m = 1, n = 2;
[m, n] = [n, m];
console.log(m, n); // 2 1

对象解构示例

javascript 复制代码
// 数组解构(按位置)
const [a, b] = [1, 2];           // a=1, b=2

// 对象解构(按键名)
const {name, age} = {name: '小明', age: 20};  // name='小明', age=20

嵌套解构

javascript 复制代码
// 嵌套数组
const [first, [second, third]] = [1, [2, 3]];
console.log(first, second, third); // 1 2 3

// 在函数参数中
function getUser([id, {name, age}]) {
  console.log(`ID: ${id}, 姓名: ${name}, 年龄: ${age}`);
}

getUser([1001, {name: '小明', age: 20}]);
// 输出: ID: 1001, 姓名: 小明, 年龄: 20

实际运用场景

如:一个函数返回多个值:

javascript 复制代码
// 函数返回多个值
function getMinMax(numbers) {
  return [Math.min(...numbers), Math.max(...numbers)];
}

// 使用解构接收
const [min, max] = getMinMax([5, 2, 8, 1, 9]);
console.log(`最小值: ${min}, 最大值: ${max}`);

解构赋值其实仅仅是个语法糖。它并没有为 JavaScript 添加新功能,只是提供了一种更简洁、更直观的语法来实现已有的功能。

相关推荐
海带紫菜菠萝汤18 小时前
MSE (Media Source Extensions) 实战:流媒体分块加载与自适应码率
前端·javascript·音视频
@小匠18 小时前
Spring Boot Nacos绑定 Map 时中文 key 导致启动失败:一次从复现到源码的排查实录
java·开发语言·前端
Knight_AL18 小时前
Lombok @Builder 踩坑:build() 前后对象类型不一样
android·java·开发语言
神明不懂浪漫18 小时前
【第五章】队列
开发语言·数据结构·经验分享·笔记·算法
吃好睡好便好18 小时前
MATLAB仿真框图3
开发语言·matlab·仿真·simulink
张元清18 小时前
React useMount Hook:只在挂载时执行一次的正确姿势 (2026)
javascript·react.js
-银雾鸢尾-18 小时前
C#中的反射关键类-Type
开发语言·c#
大黄说说18 小时前
Java 与 Kotlin 混合开发避坑指南:老项目平滑迁移 Kotlin 实操手册
java·开发语言·kotlin
breeze jiang18 小时前
JavaScript 单例模式:用静态属性保证 Popup 只创建一次
开发语言·javascript·单例模式
No Silver Bullet18 小时前
Vue进阶(贰幺叁)vue.config.js 中 productionSourceMap 作用详解
前端·javascript·vue.js