跳到主要内容

解构赋值:优雅地"拆快递"

什么是解构?

你收到一个快递盒,里面有三样东西。你可以:

  1. 打开盒子,一个一个拿出来(传统方式)
  2. 直接"啪"一下全拆出来,每样东西直接就位(解构赋值)

两种语言都支持这种"啪"的操作,但 JS 的解构比 Python 更强大。

数组/列表解构

加载代码编辑器中……
操作PythonJavaScript
基本解包a, b = [1, 2]const [a, b] = [1, 2]
忽略值_, b, _, b, 逗号占位
收集剩余*rest...rest

字典/对象解构

这是 JS 的强项——对象解构非常强大且常用:

加载代码编辑器中……

JS 的对象解构是日常开发中使用频率最高的特性之一。Python 没有对应的字典解构语法——这是 JS 少有的比 Python 更方便的地方。

函数参数解构

JS 中,解构经常用在函数参数里:

加载代码编辑器中……

展开运算符

解构的"反面"——把容器里的东西"摊开":

加载代码编辑器中……
操作PythonJavaScript
展开列表/数组[*a, *b][...a, ...b]
展开字典/对象{**d1, **d2}{...d1, ...d2}
符号***统一用 ...

Python 用 *(列表)和 **(字典)两个符号。JS 统一用 ...——上下文自动判断是数组还是对象。

🏋️AI 练习

给定以下数据:

const response = {
status: 200,
data: {
users: [
{ id: 1, name: "小明", scores: [85, 92, 78] },
{ id: 2, name: "小红", scores: [90, 88, 95] },
]
}
}

用解构赋值,一行取出第一个用户的名字和第一门成绩。

然后用 Python 实现同样的功能(虽然没有解构语法,但试试用最简洁的方式)。

小结

概念PythonJavaScript
数组解构a, b = [1, 2]const [a, b] = [1, 2]
对象解构❌ 没有原生支持const { x, y } = obj
展开(列表)[*a, *b][...a, ...b]
展开(字典){**a, **b}{...a, ...b}
剩余元素first, *rest = lstconst [first, ...rest] = arr

一句话:解构是现代编程的"拆快递"技能。JS 的对象解构是杀手级特性,Python 的列表解包同样优雅。 学会解构,你的代码会变得简洁很多。