node.js フレームワークであるFabを紹介するスライドを見たことがあります。
これはJavaScriptですか?
誰かがそのコードで何が起こっているのか説明できますか?
私はすべて迷っています。
node.js フレームワークであるFabを紹介するスライドを見たことがあります。
これはJavaScriptですか?
誰かがそのコードで何が起こっているのか説明できますか?
私はすべて迷っています。
プレーンな JavaScript であり、関数連鎖パターンです。
最初の行に( fab = require("fab") )
は、fab
関数が含まれており、その参照を返します。
後続の括弧はすべて関数呼び出しであり、各関数呼び出しはおそらく同じ関数を何度も返します。
パターンは、おそらく次の単純化された例のようになります。
var foo = function (arg) {
// detect what the argument is
if (typeof arg == 'function') {
// do something with arg
console.log('function: '+arg());
} else if (arg instanceof RegExp) {
// arg is a RegExp...
console.log('A RegExp: '+arg);
} else if (typeof arg == "string") {
// arg is a string
console.log('A string: '+arg);
}
return foo; // return a reference to itself
};
(foo)
(function() { return "Foo "; })
(/bar/)
(" baz!");
出力:
関数: フー 正規表現: /bar/ ひも:バズ!
それは確かに理解するのが難しいです。Javascriptのようには見えません...
とにかく、FAB は呼び出された関数へのポインターを返すことを利用します。例えば:
function doSomething(str){
alert(str);
return arguments.callee;
}
// Alerts 'hi' and then 'there'
doSomething('hi')('there');
もちろん、引数の数をカウントしたり、渡された引数のタイプをチェックしたりするなど、追加の条件を実装することもできます。例:
function doSomething(){
if(arguments.length == 1){
alert(arguments[0])
}
else if(arguments.length == 2){
alert(arguments[0] + arguments[1]);
}
return arguments.callee;
}
doSomething
("Hi, 3 + 4 is:")
(3, 4);
最後の例は次のように警告します。
> Hi, 3 + 4 is:
> 7