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

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

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

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

Q&A

解決済

4回答

1888閲覧

クロージャーの使い方

TOEICengineer

総合スコア36

JavaScript

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

1グッド

0クリップ

投稿2016/03/11 09:42

編集2016/03/12 12:51

JavaScriptなどで、クロージャーを定義できるかと思うのですが、
どういった場合にクロージャーをつかっているのでしょうか?

シンプルにコードを書きたいので、関数内に、関数を定義することはあまりしたくないのですが。。

どういったシチュエーションでクロージャーを使っていらっしゃるのでしょうか?

miyabi-sun👍を押しています

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

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

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

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

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

argius

2016/03/12 06:27

ryls-nmmさんの書かれているように、Clo"j"ureはLISP系言語の名称です。タグには"クロージャ","JavaScript"辺りを付けるとよろしいかと思います。
guest

回答4

0

static 変数がわりとか

javascript

1function counter(){ 2 var count = 0 3 return function(){ 4 return count++ 5 } 6}

あとその関数内でしか使わないコード(再帰関数だったり)を外側に出すとややこしいので関数内においたりですね

forEach や コールバック関数を作って渡すなどもありますね

javascript

1!function(){ 2 ;[1,2,3].forEach(e => console.log(e)) 3 4 setTimeout(e => console.log(e), 1000, "abc") 5}()

それと closure です
clojure だと lisp 系の関数型言語のことになってしまいます

投稿2016/03/11 09:49

ryls-nmm

総合スコア633

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

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

0

ベストアンサー

外部ファイル全て(特にライブラリはマスト)です。
Node.jsのrequire等ではcommon.jsという手法に従っているので、
意図しないグローバル汚染を避ける事が出来ます。

JavaScriptは構造上の欠陥で、
外部ファイルを読み込む度に何かしらのグローバル汚染が発生します。
クロージャーを使わない場合これは避けることが出来ないので、無用なグローバル汚染を避ける為に仕方なく使う必要があり、JavaScriptの弱点となっています。


個人的にはAltJSを使う事をおすすめします。

Bash

1$ npm install -g coffee-script 2$ cat test.coffee 3hoge = 123 4$ coffee -c test.coffee 5$ cat test.js 6// Generated by CoffeeScript 1.10.0 7(function() { 8 var hoge; 9 10 hoge = 123; 11 12}).call(this);

このように特に気にせずともクロージャーで包んでくれるので副作用を極力減らしたコードが利用出来ます。

投稿2016/03/12 01:21

miyabi-sun

総合スコア21158

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

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

0

もう、jQueryなんかつかうと、意識していなくてもクロージャ使いまくりです。
jQueryは息を吐くようにクロージャ使います。

投稿2016/03/11 12:10

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

クロージャーを使えばグローバル空間の汚染を最小限に留めることが出来るので、
コードが膨大な量になった時のトラブルが起きにくくなります。

投稿2016/03/11 10:04

KakeruKaneko

総合スコア115

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問