すみません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 件
わざわざコード解析して教えるメリットはあるの?何がしたいかも分からないのに
これだけ判りやすいコードなのにすぐに人に聞く、ってのが信じられん。
図書館でも立ち読みでもいいから1回入門書全体をざっと読むくらいはしとけよ。そんな程度のことさえやらずにプログラミングやろうとするのは無駄。
あと好奇心と行動力が足りない。自分でコードをいろいろ書き換えて試せ。それでPCが爆発したりしないから安心しろ。
これ、結構いい例題だね。
グローバルを汚さずに、どうやてローカルで変数を保持するかというのを、クロージャを使ってやってるわけだ。基本といえば基本だけど、この程度の問題に答えられないのがW3Qのレベルだとも思う。敢えて回答を傍観。
すみません自己解決しました
括弧演算子とか全く知らないで使用してました^^;
関連するトピックス