[ES6] 09. Destructuring Assignment -- 2
Read More: http://es6.ruanyifeng.com/#docs/destructuring
Array
“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值:
Exp 1:
var [head, ...tail] = [1, 2, 3, 4]; console.log(head); // 1 console.log(tail); // [2, 3, 4]
Exp 2:
var [foo, [[bar], baz]] = [1, [[2], 3]]; foo // 1 bar // 2 baz // 3
如果解构不成功,变量的值就等于undefined:
var [foo] = false; console.log(foo); // undefined var [foo] = [false]; console.log(foo); // false
另一种情况是不完全解构:
var [x, y] = [1, 2, 3]; console.log(x); // 1 console.log(y); // 2
解构只能用于数组或对象, 对undefined或null进行解构,会报错:
// 报错 var [foo] = undefined; var [foo] = null;
解构赋值允许指定默认值:
[x, y='b'] = ['a'] // x='a', y='b'
Object
var o = { p: [ "Hello", { y: "World" } ] }; var { p: [x, { y }] } = o; x // "Hello" y // "World"
如果要将一个已经声明的变量用于解构赋值,必须非常小心:
// 错误的写法 var x; {x} = {x:1}; // SyntaxError: syntax error
上面代码的写法会报错,因为JavaScript引擎会将{x}
理解成一个代码块,从而发生语法错误。只有不将大括号写在行首,避免JavaScript将其解释为代码块,才能解决这个问题。
// 正确的写法 ({x}) = {x:1}; // 或者 ({x} = {x:1});
分类:
ES6
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2013-11-21 8. 利用反射机制, ListArray,intent来实现多Activity的切换
2013-11-21 7. Add song to Phone
2013-11-21 6. Activity life cycle