0

如果我有一个接收电话的函数

function car_total(y) {

final_total(y);
}


function toy_total(x) {

final_total(x);
}

如果它们存在但只能接收 1 个参数而不抛出错误,我如何创建一个计算两个总数的函数,这可能吗?

function final_total(x,y) {
//if passed just x
sum = x ;
//if passed just y 
sum = y;
//if passed x, y 
sum = x + y ; 

}
4

3 回答 3

6

您只能传递一个参数,但只有一个参数,该参数必须是x; 因为没有办法(不传递对象)来确定您“打算”传递的变量。因此,收到的第一个变量将始终是x第二个y,尽管如此,我建议:

function final_total(x,y) {
    return y ? x + y : x;
}

并且,在只有一个传入参数的情况下,此函数返回该单个值,或者,给定两个变量,返回这两个的总和。所以这确实如你所愿,即使无法确定是否x 传入 y

但是,如果您必须显式传入 x y出于某种原因):

function final_total(values) {
    var x = values.x || 0,
        y = values.y || 0;
    return x + y;
}

var variableName1 = final_total({x : 23, y : 4});
console.log(variableName1);
// 27

var variableName2 = final_total({y : 4});
console.log(variableName2);
// 4

var variableName3 = final_total({x : 23});
console.log(variableName3);
// 23​

JS 小提琴演示

于 2012-11-21T20:06:56.460 回答
0
var final_total = function(x,y) { return x+(y||0); };
于 2012-11-21T20:14:14.243 回答
0

您可以像拥有它一样定义函数,然后检查任何一个参数是否为空。缺点是您必须确保在调用时将 null 放在正确的位置。

function final_total(x,y) {

    if(x && y) sum = x + y;
    else if (x) sum = x;
    else if (y) sum = y; 

}
于 2012-11-21T20:06:35.957 回答