質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

919閲覧

functionの中で、functionを返し更にその中でfunctionを返す書き方のメリット

doumeishi

総合スコア52

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

1グッド

0クリップ

投稿2016/03/16 01:39

下記のコードは pixi.jsの一部を抜粋しました。

function doParallel(fn) {
return function (obj, iterator, callback) {
return fn(async.eachOf, obj, iterator, callback);
};
}

こういう関数の書き方のメリットや良さがよくわからないでいます。
しかし、有名なJavaScriptのライブラリの殆どはここのような書き方を
しているので、私の知識不足だと思っています。
動作は何をしているのかわかるのですが、
最初から、

fn(async.eachOf, obj, iterator, callback);

を呼び出すだけと、どのようにちがうでしょうか?

T.Yokotani👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

コードを読む限りでは元々の関数は下記コードのようになっています。

JavaScript

1function fn1 (eachOf, obj, iterator, callback) {}

doParallel() は第一引数を async.eachOf に束縛しているようですね。

js

1var fn2 = fn1.bind(this, async.eachOf.bind(async)); // doParallel とほぼ同じ処理(doParallel は this 値の束縛はしていない)

async.eachOf を第一引数にとる関数呼び出しが数多く指定されている場合には初めから第一引数を束縛した関数を定義する事でコードを効率化できるという事なのでしょう。
初めから束縛した関数を定義しない理由は async.eachOf を第一引数にとらない関数呼び出しもあるので使い分けているものと思われます。

Re: doumeishi さん

投稿2016/03/16 01:53

think49

総合スコア18162

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

doumeishi

2016/03/21 18:46

コードの効率のためにしているのですね! わかりました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問