我正在尝试遵循该规则并避免重复相同的代码。
我有这个单一的功能,但根据输入我希望它返回一个对象数组或一个对象(不是一个对象的数组)
例如(实际的功能比这个更长,更精细,显然只有最后几行经过更长的计算)function (nameParameter, ageParameter, inputType)
{
if (inputType === "asObject")
{
var x = {};
x.name = nameParameter;
x.age = ageParameter;
return x;
}
else if (inputType === "asArray")
{
var y = [];
y.push(nameParameter);
y.push(ageParameter);
return y;
}
};
这是否可行,如果是这样,这是好的做法?还有其他方法吗?
否则我将不得不使用几乎完全相同的代码创建两个不同的函数。
答案 0 :(得分:2)
是;这将很好。
Javascript不是强类型的;函数可以随时返回他们想要的任何内容。
答案 1 :(得分:2)
您可以通过使用已设置的值声明对象和数组来简化代码,但在我看来,如果您有这种严格的编码类型,则无需保留此功能......无论如何,这是一个简化版本:
function (nameParameter, ageParameter, inputType) {
var ret;
if (inputType === "asObject") {
ret = {
name: nameParameter,
age: ageParameter
};
} else if (inputType === "asArray") {
ret = [nameParameter, ageParameter];
}
return ret;
};
我在没有名字的情况下留下了它,最后留了一个分号,因为我猜它是通过变量声明的。
答案 2 :(得分:2)
不要这样做。实现一个版本并添加一个包装函数,用于转换您可能需要的其他格式。这样调用者总是会得到一致的行为,而且仍然没有代码重复。
function asObject(nameParameter, ageParameter)
{
//Lots of work here.
var x = {};
x.name = nameParameter;
x.age = ageParameter;
return x;
};
function asArray(nameParameter, ageParameter)
{
//Just defer to the other version and repack its response.
var o = asObject(nameParameter, ageParameter);
var y = [o.nameParameter,o.ageParameter ];
return y;
}
答案 3 :(得分:-1)
if ( typeof inputType == 'object') {
//object part of code
} else {
//array part of code
}