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

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

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

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

Q&A

3回答

2703閲覧

javascriptでクロージャは非推奨?

tixure55

総合スコア400

JavaScript

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

0グッド

0クリップ

投稿2015/11/12 00:27

Mozilla Foundation では極力クロージャになることを避けることを推奨していましたが、現在でもクロージャは極力使わないに越したことはないのでしょうか?

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

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

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

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

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

guest

回答3

0

無駄にクロージャを生産するな」とはよくいわれます。
言葉を変えれば、「無駄に」とは「無駄になる条件がある」という事であり、無条件にクロージャを避ける意見は聞いたことがないですね。

  • クロージャを形成するとクロージャに閉じ込められたスコープが製作者の意図せず、GCがメモリ開放できないようにコードを組んでしまったり、スコープが深すぎてスコープチェーン上の参照速度低下が発生したりします。

比較的、無名関数式を積極的に使うコードに見られがちですが、スコープに注意すればパフォーマンス上の問題は最小限に抑えられます。

  • 実際のところ、「クロージャを使わない事」は「グローバル変数を使う事」と同義なので保守性/安全性の意味ではお勧めしません。

Mozilla Foundation では極力クロージャになることを避けることを推奨していましたが、

差し支えなければ、tixure55 さんが確認した記事のURLを教えてください。
読み手によって解釈が異なることもあるので、その記事を他の人が読めば違った違憲が出てくるかもしれません。

Re: tixure55 さん

投稿2015/11/12 20:10

think49

総合スコア18166

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

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

0

› Mozilla Foundation では極力クロージャになることを避けることを推奨していましたが

いつ頃、どのような環境、どんな文脈での話なのかわからないので、評価が難しいです。

それはともかく、現代JavaScriptでは、Ajaxやイベントドリブン、Node.jsなど、コールバック関数を使う場面が多数発生します。そして、コールバックでは渡ってくる引数が決まっていて、自分で何か別に引数へデータを渡すのが困難な場面も多いです。となると、渡すべき値はグローバル変数にしてしまうか、クロージャとして伝えるかしかありません。

グローバル変数を氾濫させるのが、プログラムの保守性・可読性を下げてしまう悪手であるのは論を待ちませんので、クロージャを使うほかない場面は多々あります。

投稿2015/11/12 00:44

maisumakun

総合スコア145201

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

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

0

クロージャを使うか使わないかはケースバイケースでは?

JavaScript Closures

パフォーマンスへの配慮
あるタスクを実行する時、クロージャが必要とされていないのにいたずらに関数を他の関数の中に作成
するのは、スクリプトのパフォーマンスに悪影響を及ぼすのであまり賢いやり方ではありません。

投稿2015/11/12 00:40

Orlofsky

総合スコア16415

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問