2016-05-06 2 views
-1

どのように私はこれを達成するためにクロージャを使用しますか?2つの数字を追加するためのjavascriptクロージャの使用

addTogether(2)(3);機能を返す、しかし

function addTogether(a, b) { 
    if (b === undefined) { 
    return function (b) { return a + b; } 
    } else { 
    return a + b; 
    } 
} 

または数は以下となります。

は、私はまた、(2,3)は次のようなものを書くことができます。5.

+0

これを行う必要があるのはなぜですか?私は、潜在的なユースケースがどんなものかに興味を持っています。 – IMTheNachoMan

答えて

5

を返すaddTogetherのように通常の加算を返すように同じ機能を必要としますあなたのユーザーのために(せいぜい)混乱させてください。私は常に関数を返すことを提案しますが、パラメータなしで呼び出すことができます(わずかに改善されています):

function addTogether(a, b) { 
    if (b === undefined) { 
    return function (c) { return a + c; } 
    } else { 
    return function () { return a + b; } 
    } 
} 
+0

FWIW: 'b == null'は' b === undefined ||を処理します。 b === null' –

+0

いいえ、オペランドの1つが 'null'または' undefined'のときは、 '=='は 'true'を返します。他のオペランドも' null'または 'undefined'です。 '0 == null; // false'実際のコードで '=='を使うのはちょうどその時です。私は 'null'チェックはおそらく必要ではないが、同意する。 –

+0

@squintハァッ、そうです。私は '=='と仮定して、0を偽のものとして扱い、nullとマッチするようにしましたが、明らかにそうではありません。 – ssube

関連する問題