Javascript 为参数指定默认值
我正在研究Javascript,发现了一个问题。我必须在给定一些参数的情况下定义构造函数。我插入了它们,但我想插入一个if,以便在用户不插入任何内容时进行检查。我正在使用寄生继承模型,但我不知道如何插入这个案例。以下是我的构造函数的一部分:Javascript 为参数指定默认值,javascript,oop,Javascript,Oop,我正在研究Javascript,发现了一个问题。我必须在给定一些参数的情况下定义构造函数。我插入了它们,但我想插入一个if,以便在用户不插入任何内容时进行检查。我正在使用寄生继承模型,但我不知道如何插入这个案例。以下是我的构造函数的一部分: function user(_id, userName, email, password, firstName, lastName, date_created, playlists) { if (firstName === 'undefined') {
function user(_id, userName, email, password, firstName, lastName, date_created, playlists) {
if (firstName === 'undefined') {
firstName = userName;
}
if (lastName === 'undefined') {
lastName = userName;
}
return {
_id: _id,
userName: userName,
email: email,
password: password,
firstName: firstName,
lastName: lastName,
date_created: new Date(),
playlists: []
};
}
假设用户不使用firstName和LastName。它将返回未定义。但是我想存储一个默认值。我该怎么做?首先,如果这是一个构造函数,你应该这样写:
function User(_id, userName, email, password, firstName, lastName, date_created, playlists) {
this._id = _id;
this.userName = userName;
this.email = email;
this.password = password;
this.firstName = firstName;
this.lastName = lastName;
this.date_created = date_created,
this.playlists = playlists
}
通过这种方式,您可以使用new
关键字get一个设置了正确值的新对象来调用它
接下来,为了设置默认值,您可以对每个属性使用| |
进行一些短融合。这样,仅当未提供值时才使用默认值
function User(_id, userName, email, password, firstName, lastName, date_created, playlists) {
this._id = _id;
this.userName = userName;
this.email = email;
this.password = password;
this.firstName = firstName || "defaultValue";
this.lastName = lastName || "defaultValue";
this.date_created = date_created || new Date(),
this.playlists = playlists || []
}
您可以将
if
逻辑置于函数声明和return
语句之间。事实上,您不应该将您的逻辑放在任何其他地方(在返回之后,它将不会被执行)可能的重复,我认为您可以使用类似以下内容:firstName:(firstName!=null)?firstName:'默认值'
好吧,你是说我必须把它放在函数user(…)和return{…}之间,对吗?@EricAlberson这是一个具体的问题。基本上,我使用代码只是为了询问我必须将语句放在何处的解释OK,但是如果我有一个默认值,我想插入“William”和“Barbosa”,我如何使用您的实现?如果用户在调用函数时提供名称,则使用提供的值。如果用户未提供值,则使用“DefaultValue”<代码>新用户(1,“willkuns”foo@bar.baz“,”asd“,”William“
将名字设置为“William”,姓氏设置为“defaultValue”,因为只提供了名字。确定。我更改了我的代码,因为我插入的代码是唯一有效的,但我不明白为什么if语句不起作用!!!并非所有falsy值都是未定义的。检查