首页 > 解决方案 > 在创建新对象时没有传递任何值时如何使用默认参数?

问题描述

我正在尝试将参数传递给一个新的类构造函数,如果没有传递参数,则计算默认参数,同时仍然可以选择通过参数名称传递任何参数。

class thing{
 constructor({a = 0, b = 0}) { 
  if(a == 0){this.a= func();}
  else {this.a = a;}
  if(b == 0){this.b= func();
  else {this.b = b;}
}
var defaultThing = new thing(); // returns Cannot destructure property `a` of 'undefined' or 'null'. 
var parametersThing = new thing({b:20}); // returns {a = 0, b = 20}

问题是,当没有传递参数时,Cannot destructure property `a` of 'undefined' or 'null'.会返回错误。

如何在使用默认参数的情况下仍然能够不使用任何参数而不会遇到此错误?

标签: javascriptclassparameter-passingdestructuring

解决方案


在您的构造函数签名中,您已经为接收到的参数上不存在属性但没有默认参数时提供了解构默认值。为此,您添加一个默认参数:

//                         vvvv−−− default parameter value
constructor({a = 0, b = 0} = {}) {
//             ^^^−−−−^^^−−−−−−−−− destructuring defaults
    // ...

如果你在没有参数的情况下调用它,默认参数值 ( {}) 将启动,然后解构默认值启动,因为该{}对象没有aor b


推荐阅读