解构赋值:优雅地"拆快递"
什么是解构?
你收到一个快递盒,里面有三样东西。你可以:
- 打开盒子,一个一个拿出来(传统方式)
- 直接"啪"一下全拆出来,每样东西直接就位(解构赋值)
两种语言都支持这种"啪"的操作,但 JS 的解构比 Python 更强大。
数组/列表解构
加载代码编辑器中……
| 操作 | Python | JavaScript |
|---|---|---|
| 基本解包 | a, b = [1, 2] | const [a, b] = [1, 2] |
| 忽略值 | _, b, _ | , b, 逗号占位 |
| 收集剩余 | *rest | ...rest |
字典/对象解构
这是 JS 的强项——对象解构非常强大且常用:
加载代码编辑器中……
JS 的对象解构是日常开发中使用频率最高的特性之一。Python 没有对应的字典解构语法——这是 JS 少有的比 Python 更方便的地方。
函数参数解构
JS 中,解构经常用在函数参数里:
加载代码编辑器中……
展开运算符
解构的"反面"——把容器里的东西"摊开":
加载代码编辑器中……
| 操作 | Python | JavaScript |
|---|---|---|
| 展开列表/数组 | [*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 实现同样的功能(虽然没有解构语法,但试试用最简洁的方式)。
小结
| 概念 | Python | JavaScript |
|---|---|---|
| 数组解构 | a, b = [1, 2] | const [a, b] = [1, 2] |
| 对象解构 | ❌ 没有原生支持 | const { x, y } = obj ✨ |
| 展开(列表) | [*a, *b] | [...a, ...b] |
| 展开(字典) | {**a, **b} | {...a, ...b} |
| 剩余元素 | first, *rest = lst | const [first, ...rest] = arr |
一句话:解构是现代编程的"拆快递"技能。JS 的对象解构是杀手级特性,Python 的列表解包同样优雅。 学会解构,你的代码会变得简洁很多。