当第一个或第二个可选参数未定义时,我试图创建一些if语句来捕获。
但是,当仅输入一个参数时,它仍会将该参数值分配给 first 参数。即
function dogBreeder (name, age) {
if (name === undefined) {
name = "Steve";
}
if (age === undefined) {
age = 0;
}
let newObject = {};
newObject.name = name;
newObject.age = age;
return newObject;
}
console.log(dogBreeder(23));
但是我们当然希望它记录:
改为{ name: Steve, age: 23 }
。
当只给出一个自变量且该自变量为数字时,我不知道如何强制将名称等于“ Steve”。
我也尝试过:
function dogBreeder (name, age) {
if (typeof(name) === "number") {
name = "Steve";
}
if (name === undefined) {
name = "Steve";
}
if (age === undefined) {
age = 0;
}
let newObject = {};
newObject.name = name;
newObject.age = age;
return newObject;
}
console.log(dogBreeder(0));
答案 0 :(得分:2)
传递一个对象而不是多个单个参数可能会更容易-然后,您可以使用默认属性值:
function dogBreeder({ name = 'Steve', age = 0 }) {
const newObject = { name, age };
// manipulate newObject here if needed
return newObject;
}
console.log(dogBreeder({ age: 23 }));
要更改原始代码,可以使用rest参数和类型正确的.find
参数(IMO,尽管这很丑陋且不太容易使用):
function dogBreeder (...args) {
const name = args.find(arg => typeof arg === 'string') || 'Steve';
const age = args.find(arg => typeof arg === 'number') || 0;
const newObject = { name, age };
return newObject;
}
console.log(dogBreeder(23));