jsはadd(1)(2)(3)呼び出し方式と同様の方法を実現する
968 ワード
var add = function(a){
return function(b){
return function(c){
return a+b+c;
};
};
};
add(1)(2)(3); //6
間違いない!ではadd(1)(2)(3)(4)のような4つの呼び出しなら、これは適用されません.
これは、関数を実行して関数自体の値を返すのと同じです.
function add(x) {
var sum = x;
var tmp = function (y) {
sum = sum + y;
return tmp;
};
tmp.toString = function () {
return sum;
};
return tmp;
}
console.log(add(1)(2)(3)); //6
console.log(add(1)(2)(3)(4)); //10
しかし、計算が完了した後もtmpという関数を返したので、計算の結果が得られません.私たちが必要とする結果は計算の数字です.では、どうすればいいのでしょうか.まず、JavaScriptでは、印刷と加算計算が、それぞれtoStringまたはvalueOf関数を呼び出すので、tmpのtoStringとvalueOfメソッドを書き直し、sumの値を返します.
以上が本文のすべての内容で、みんなが好きになることを望みます.