-
ID:jyuYwh さんの質問

すみませんJavaScriptについて質問です

///コード1 (下のアドレスのページより引用)
// 関数オブジェクトをリターンする関数
function createCounter() {
var n = 0;
// クロージャを作成して返す
return function() {
return n++;
};
}
// createCounter()を呼び出し、
// 戻り値 (関数オブジェクト) を変数に格納しておく
var counter = createCounter();

alert(counter()); // 0が表示される
alert(counter()); // 1が表示される

上記のコード
1.
var counter = createCounter();
これは実行した結果(return n++;で返された)の値を格納しているのですか?
2.
alert(counter());の
counterの後に()を付ける理由はなんですか?
3.
もしかして
var counter = createCounter();で変数counterに
return function() {
return n++;
};
を格納して
alert(counter());のcounterの後ろの()で
function() {
return n++;
};
の関数を即時関数にしているのですか?

質問が分かり辛いかもしれませんがお答えしていただけたら幸いです

みんなの回答 4 件

ID:e27Wu5 さんの回答

わざわざコード解析して教えるメリットはあるの?何がしたいかも分からないのに

ID:0PTEf/

教える気ないんだったらレスしてやんなよ

ID:ATIEov

メリットとか言い出したら全部あなたの為に我々は書き込まないといけないのか

ID:fb4V39 さんの回答

これだけ判りやすいコードなのにすぐに人に聞く、ってのが信じられん。
図書館でも立ち読みでもいいから1回入門書全体をざっと読むくらいはしとけよ。そんな程度のことさえやらずにプログラミングやろうとするのは無駄。
あと好奇心と行動力が足りない。自分でコードをいろいろ書き換えて試せ。それでPCが爆発したりしないから安心しろ。

ID:F0Ln7B さんの回答

これ、結構いい例題だね。
グローバルを汚さずに、どうやてローカルで変数を保持するかというのを、クロージャを使ってやってるわけだ。基本といえば基本だけど、この程度の問題に答えられないのがW3Qのレベルだとも思う。敢えて回答を傍観。

ID:snZX4X さんの回答

すみません自己解決しました
括弧演算子とか全く知らないで使用してました^^;

最終更新日:2015-06-18 (1,617 views)

関連するトピックス

ページ上部に戻る