rah*_*kks 17 javascript ecmascript-6 object-destructuring
在传递空对象的情况下,对象解构会引发错误
function test ({name= 'empty'}={}) {
console.log(name)
}
test(null);Run Code Online (Sandbox Code Playgroud)
未捕获的类型错误:无法解构
name“未定义”或“空”的属性。在测试 (:1:15) 在 :1:1
Cer*_*nce 27
查看文档:
如果未传递值或未定义,则默认函数参数允许使用默认值初始化命名参数。
换句话说,如果传递了默认参数,则不会分配null:
function fn(arg = 'foo') {
console.log(arg);
}
fn(null);Run Code Online (Sandbox Code Playgroud)
在函数的第一行进行解构:
function test (arg) {
const { name = 'empty' } = arg || {};
console.log(name)
}
test(null);Run Code Online (Sandbox Code Playgroud)