es6函数参数解构允许直接用对象解构语法接收参数,自动提取属性值;支持默认值(undefined触发)、嵌套解构、别名及为整个参数设默认空对象防错。

ES6 函数参数解构允许你在定义函数时,直接用对象解构语法接收参数,从而在函数体内自动提取对象的属性值,无需手动点取。
基本写法:参数直接写解构模式
函数形参不写普通变量名,而是写一个对象解构表达式:
-
语法形式:
function fn({ prop1, prop2 }) { ... } -
调用时传入普通对象:
fn({ prop1: 'a', prop2: 42 }) -
函数内可直接使用:
prop1和prop2,它们已自动赋值
支持默认值:防止属性缺失导致 undefined
当传入对象缺少某些属性时,可通过解构默认值兜底:
function getUser({ name = '匿名', age = 18 }) { return `${name} ${age}岁`; }-
getUser({ name: '李四' })→"李四 18岁" -
getUser({})→"匿名 18岁" - 注意:
undefined触发默认值,null或0不触发
支持嵌套解构和别名:处理深层结构或命名冲突
对嵌套对象或需重命名的属性,可在参数中直接展开:
function printUser({ name, info: { city, level: rank } }) { console.log(name, city, rank); }- 调用:
printUser({ name: '王五', info: { city: '杭州', level: '高级' } }) - 结果:
"王五 杭州 高级" - 别名(
level: rank)避免变量名与保留字/已有变量冲突
必须提供默认空对象:避免传入 undefined 报错
如果调用时不传任何参数(即 fn()),解构会尝试对 undefined 操作,报错 Cannot destructure property ... of 'undefined'。安全写法是给整个参数加默认值:
function move({ x = 0, y = 0 } = {}) { return [x, y]; }-
move()、move({})、move({x: 5})全部合法 - 关键点:
= {}是给「整个参数对象」设默认值,不是给某个属性











