2016-07-25 12 views
2

私はかなり新しいJavascriptです。コードの一部を理解しようとしています。属性を含む関数内の関数を返す

function abcd (x){ 
    return function(v){ 
     return x && v ; 
    } 
} 

、それは以下のように呼ばれている:

ここ
abcd(false); 

、どこコンパイラはvの値からのリターン機能の属性を取得ん

コードは次のようになります。

+2

を理解するために、このような機能を変更することができます。 'abcd'は' v'が値を持つために呼び出される必要がある新しい関数を返します。その関数はあなたの例では呼び出されていないので、 'v'は存在しません。 FYI、 'x'と' v'は* attributes *ではなく関数の* parameters *です。 –

+0

まあ、 'abcd'は関数を返すので、' abcd(false) 'は関数です - この関数は引数' v'を受け取ります。例: 'abcd(false)(true);'は 'false'を返します。 – Xufox

+0

関数curryingと呼ばれ、関数が部分的に実行され、myfunction(param1)(param2)のようにチェーンすることができるように別の関数を返します。 –

答えて

1

関数の引数の部分的な適用を可能にする関数を構築する方法です。 カルト機能です。あなたがabcd(false);にそう

をカリー化についての詳細を知るために、このLINKを確認することができます

return function(v){ 
     return x && v ; 
    } 

しかしabcd(false)(false)falseを返します、内部関数を返します。

あなたは、わずかにそれはない

function abcd (x){ 
    return function(v){ 
     return x + v ; 
    } 
} 
var _a = abcd(1)(1); // will log 2 
関連する問題