Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为参数指定默认值_Javascript_Oop - Fatal编程技术网

Javascript 为参数指定默认值

Javascript 为参数指定默认值,javascript,oop,Javascript,Oop,我正在研究Javascript,发现了一个问题。我必须在给定一些参数的情况下定义构造函数。我插入了它们,但我想插入一个if,以便在用户不插入任何内容时进行检查。我正在使用寄生继承模型,但我不知道如何插入这个案例。以下是我的构造函数的一部分: function user(_id, userName, email, password, firstName, lastName, date_created, playlists) { if (firstName === 'undefined') {

我正在研究Javascript,发现了一个问题。我必须在给定一些参数的情况下定义构造函数。我插入了它们,但我想插入一个if,以便在用户不插入任何内容时进行检查。我正在使用寄生继承模型,但我不知道如何插入这个案例。以下是我的构造函数的一部分:

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值都是未定义的。检查