渡すことができる引数は 1 つだけですが、その引数がx
;でなければならない引数は 1 つだけです。どの変数を「意図して」渡すかを(オブジェクトを渡さずに) 判断する方法がないためです。したがって、最初に受け取った変数は常にx
、2 番目の変数y
は
function final_total(x,y) {
return y ? x + y : x;
}
そして、渡された引数が 1 つだけ存在する場合、この関数はその単一の値を返すか、2 つの変数が与えられた場合、それら 2 つの合計を返します。したがって、渡されたかどう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 フィドルのデモ。