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

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

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

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

Q&A

3回答

1309閲覧

【JavaScript】クロージャーについて

YamasakiRintaro

総合スコア13

JavaScript

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

0グッド

0クリップ

投稿2017/05/16 15:35

初心者です。
丁寧に解説して頂けるとありがたいです。
以下の質問、よろしくお願いします。

以下①、②の違いがわかりません。
実行結果は一緒でした。
違いを教えてください。

javascript

1/*①*/ 2var module4 = function() { 3 var count = 0; 4 console.log(count); 5 6 return { 7 add: function() { 8 count++; 9 }, 10 show: function() { 11 console.log(count); 12 } 13 }; 14}(); 15module4.count; //undefind 16module4.add(); 17module4.show(); //1

javascript

1/*②*/ 2var module5 = (function() { 3 var count = 0; 4 console.log(count); 5 6 return { 7 add: function() { 8 count++; 9 }, 10 show: function() { 11 console.log(count); 12 } 13 }; 14})(); 15module5.count; //undefind 16module5.add(); 17module5.show(); //1

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

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

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

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

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

guest

回答3

0

自分には質問のしかた、あるいは問題に対するアプローチが間違っているように感じます。

(1)と(2)の違いを訪ねたいなら、それぞれの意味についてのあなたの解釈を述べるべきです。それさえ書かれていればあなたの解釈を踏まえた回答が可能ですが、それが何も書かれていないので回答すべきポイントがつかめません。

投稿2017/05/16 17:39

KSwordOfHaste

総合スコア18394

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

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

think49

2017/05/17 03:20

同意です。質問全体の5割程度は同じ感想を持ちます。 ただ、仮に指摘したとしても、他に質問への回答がついてそちらをベストアンサーに選んで、質問への指摘は無視される場面が多いので、私は指摘する事を諦めてしまいました。 本来は「KSwordOfHaste さんの指摘をもって質問が改善されるまで回答しない」が正しい在り方だと思いますが、teratailではそういう風潮がない印象があります。 stack overflowでは「質問が改善されるまで回答しない」が徹底されていて良いと思うのですが。
KSwordOfHaste

2017/05/17 03:35

コメントは付かなくても質問者さんやQ&Aを見ている方に何かを感じてもらえたら、それでよいかなと思ってます。今回はthink49さんの回答をみて「そうとしか言えないよなぁ」と感じましたが、それでも質問者さんが何を思って質問したのかわからないという思いが強かったのでコメントしてみました。 しかし、自分のコメントは単なる指摘に終わっていて回答になってないですね。回答欄に書くときは質問への指摘だけでなく回答の一端を記載するようにしてるつもりなんですが、今回それをつけるの忘れてました!
guest

0

本質的な違いは、変数名の差以外にはありません。

クロージャの外側には、いろんな書き方があります。

javascript

1var foo = function(){}(); 2var bar = (function(){})(); 3var baz = (function(){}());

変数に代入する場合、カッコが余分にあろうがなかろうが関係ありません。一方、単に実行するだけのクロージャの場合、文をfunctionから始めようとすると関数宣言とみなされてエラーになるので、カッコや単項演算子など何か別のものから始める必要が出てきます。

投稿2017/05/16 23:25

編集2017/05/16 23:25
maisumakun

総合スコア145183

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

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

0

変数名が module4 から module5 に変わっている事以外は、実質的に変わりないと思います。
② は括弧が無駄とは思いましたが。

Re: YamasakiRintaro さん

投稿2017/05/16 16:22

編集2017/05/16 16:55
think49

総合スコア18162

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問