Mozilla Foundation では極力クロージャになることを避けることを推奨していましたが、現在でもクロージャは極力使わないに越したことはないのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
「無駄にクロージャを生産するな」とはよくいわれます。
言葉を変えれば、「無駄に」とは「無駄になる条件がある」という事であり、無条件にクロージャを避ける意見は聞いたことがないですね。
- クロージャを形成するとクロージャに閉じ込められたスコープが製作者の意図せず、GCがメモリ開放できないようにコードを組んでしまったり、スコープが深すぎてスコープチェーン上の参照速度低下が発生したりします。
比較的、無名関数式を積極的に使うコードに見られがちですが、スコープに注意すればパフォーマンス上の問題は最小限に抑えられます。
- 実際のところ、「クロージャを使わない事」は「グローバル変数を使う事」と同義なので保守性/安全性の意味ではお勧めしません。
Mozilla Foundation では極力クロージャになることを避けることを推奨していましたが、
差し支えなければ、tixure55 さんが確認した記事のURLを教えてください。
読み手によって解釈が異なることもあるので、その記事を他の人が読めば違った違憲が出てくるかもしれません。
Re: tixure55 さん
投稿2015/11/12 20:10
総合スコア18166
0
› Mozilla Foundation では極力クロージャになることを避けることを推奨していましたが
いつ頃、どのような環境、どんな文脈での話なのかわからないので、評価が難しいです。
それはともかく、現代JavaScriptでは、Ajaxやイベントドリブン、Node.jsなど、コールバック関数を使う場面が多数発生します。そして、コールバックでは渡ってくる引数が決まっていて、自分で何か別に引数へデータを渡すのが困難な場面も多いです。となると、渡すべき値はグローバル変数にしてしまうか、クロージャとして伝えるかしかありません。
グローバル変数を氾濫させるのが、プログラムの保守性・可読性を下げてしまう悪手であるのは論を待ちませんので、クロージャを使うほかない場面は多々あります。
投稿2015/11/12 00:44
総合スコア145201
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
クロージャを使うか使わないかはケースバイケースでは?
パフォーマンスへの配慮
あるタスクを実行する時、クロージャが必要とされていないのにいたずらに関数を他の関数の中に作成
するのは、スクリプトのパフォーマンスに悪影響を及ぼすのであまり賢いやり方ではありません。
投稿2015/11/12 00:40
総合スコア16415
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。