javascript - 在创建新对象时没有传递任何值时如何使用默认参数?
问题描述
我正在尝试将参数传递给一个新的类构造函数,如果没有传递参数,则计算默认参数,同时仍然可以选择通过参数名称传递任何参数。
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'.
会返回错误。
如何在使用默认参数的情况下仍然能够不使用任何参数而不会遇到此错误?
解决方案
在您的构造函数签名中,您已经为接收到的参数上不存在属性但没有默认参数时提供了解构默认值。为此,您添加一个默认参数:
// vvvv−−− default parameter value
constructor({a = 0, b = 0} = {}) {
// ^^^−−−−^^^−−−−−−−−− destructuring defaults
// ...
如果你在没有参数的情况下调用它,默认参数值 ( {}
) 将启动,然后解构默认值启动,因为该{}
对象没有a
or b
。
推荐阅读
- sql - 在 SQLite 中仅使用 SQL 更新和记录更改的行
- c# - TransactionScope 超出范围有效值translationIsolation错误
- python - 使用图表分析目录内容质量随时间的演变
- android-gradle-plugin - gradle 问题描述中的详细信息
- javascript - 如果状态为空,如何清除 React Material AutoComplete 选定的标签?
- flutter - Flutter 用户数据占用大量空间
- windows - 教程:如何使用 WinDbg / KD 启动调试 VirtualBox Windows 虚拟机?
- javascript - 节点使用对象引用填充数组
- api - 更改服务器中的发件人 ip
- java - 如何在我的程序中使用 Fira Code 作为字体?