微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JavaScript的构造函数中的= =}表达式是什么意思?

如何解决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 举报,一经查实,本站将立刻删除。