function greet({ name = 'Rauno' } = {}) {
console.log(`Hi ${name}!`);
}
greet() // Hi Rauno!
greet({ name: 'Larry' }) // Hi Larry!
虽然我理解基本功能...但我不明白为什么需要执行greet({ name = 'Rauno' } = {})
而不是greet(name = 'Rauno')
。他们不是实现同样的结果吗?那么,为什么?
function greet({ name = 'Rauno' } = {}) {
console.log(`Hi ${name}!`);
}
greet() // Hi Rauno!
greet({ name: 'Larry' }) // Hi Larry!
虽然我理解基本功能...但我不明白为什么需要执行greet({ name = 'Rauno' } = {})
而不是greet(name = 'Rauno')
。他们不是实现同样的结果吗?那么,为什么?
function greet({ name = 'Rauno' }) {
console.log(`Hi ${name}!`);
}
greet(); // throws reference error
你未显式传递第一个参数,而是隐含地将其传递为 undefined
。所以当 JavaScript 尝试访问 undefined.name
时,它会失败并抛出引用错误。因为 undefined
不是一个对象,也没有名字属性。所以你应该设置参数的默认值来覆盖 undefined
的情况。然后 JavaScript 尝试检索 {}.name
,结果是 undefined
,并且默认的名字值被检索(在你的情况下是 Rauno)。
greet
函数接受一个带有 "name" 属性的对象。看一下调用的样子:greet({ name: 'Larry' }) // Hi Larry!
如果你编写了 function greet(name = "Rauno") { /***/ }
,那么该函数将接受一个字符串参数,你可以像这样调用它:greet("@Grateful");