如何解决JavaScript的构造函数中的= =}表达式是什么意思?
有人可以告诉我下面代码中的= {}表达式是做什么的吗?
class Dragon {
constructor({ birthdate,nickname,traits } = {}) {
this.birthdate = birthdate || DEFAULT_PROPERTIES.birthdate;
this.nickname = nickname || DEFAULT_PROPERTIES.nickname;
this.traits = traits || DEFAULT_PROPERTIES.randomTraits;
}
}
解决方法
Default value for the paremeter。构造函数将一个对象作为其唯一参数,如果您调用不带任何参数的函数,则会将一个空对象(即{}
)作为参数
请注意,该函数仅接受一个参数,尽管由于object destructuring syntax
可能看起来像3。 ,看下面的代码:
function sayHello(name){
const nameToPrint = name || "Unknown"
console.log('Hello' + nameToPrint)
}
sayHello('Tylor')
// Hello Tylor
sayHello()
//Hello Unknown
此功能是完全有效的功能。如果未提供参数nameToPrint
,则name
的值可以是传入的名称,也可以是Unknown。
现在让我们对此进行一些更改:
function sayHello({name}){
const nameToPrint = name || "Unknown"
console.log('Hello' + nameToPrint)
}
sayHello('Tylor')
// Hello Tylor
sayHello()
//Cannot destructure property 'name' of 'undefined' as it is undefined.
现在,如果未提供参数name
,则该函数将引发错误。这是由于以下事实:它将尝试从未提供的对象(也就是未定义的对象)中析构函数,最终将导致错误。通过添加={}
,我们为对象添加了默认值。因此,现在,如果不提供参数,则它们将是不确定的(伪造的值);并且,这些参数的值将为后备参数(||
之后的值)。
回到我们的示例:
function sayHello({name} = {}){
const nameToPrint = name || "Unknown"
console.log('Hello' + nameToPrint)
}
sayHello('Tylor')
// Hello Tylor
sayHello()
//It will try to extract the property name from object {}
// The value of name will be undefined,so the value of nameToPrint will be "Unknown"
//Hello Unknown
最后,尝试访问未定义的属性将触发错误,但是尝试访问空对象的属性只会导致该值未定义。 See this for more info
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。