Tweet
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
- Newer: ベンチャー企業論入門―会社設立から資金調達、M&Aまで
- Older: bookmarkletterにYFTを使ってみた。
Home > > クロージャに苦戦中(JavaScript)
Tweet
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
Home > > クロージャに苦戦中(JavaScript)
Home > JavaScript > クロージャに苦戦中(JavaScript)
Tweet
このブログを始めてまだ1週間ちょっとしか経ってないのに、3日も空けてしまうとは…
別に何をやってたってわけでもないんですが、強いて言えば、JavaScriptの勉強してました。
で、記事のタイトル通りクロージャでつまづきまくってます。
クロージャとは…ってのは、googleやyahoo、参考記事に任せるとして、とりあえず、一人前のJavaScripterになるためには超えなきゃならない壁なわけです。
何でいきなり勉強しようと思ったかというと、この記事(JavaScript とクロージャ - bkブログ)が面白かったからです。
(別にclosureという響きが引きこもりっぽくて気に入ったわけではないですよ。)
入門書とかでサンプルを見たことはあったんですが、どう便利なのかイメージできなかったので…(応用力・想像力が足りない僕のせいですが)
せっかくなので勉強用に作ったスクリプトを張ってみます。
僕と同じく動いてるものを見ないとよくわからんって人もいると思うので。(まぁ僕もまだよくわかってないんですが…)
ちょっと長いので、続きに入れます。
興味ある人はどうぞ。
これがサンプルです。
カウントダウン1、2を適当にクリックしてみてください。
カウントダウン1 カウントダウン2
実はこの2つのリンクには、全く同じ関数を設定してあります。
ソース
<script type="text/javascript">
function bnCounter() {
var count = 10;
return function() { document.getElementById("bnConsole").value += count-- + " ";
if(count < 0) count = 10;
}
}
document.getElementById("bnLink1").onclick = bnCounter();
document.getElementById("bnLink2").onclick = bnCounter();
</script>
document.getElementById("bnLink1").onclick = (function() {
var count = 10;
return function() { document.getElementById("bnConsole").value += count-- + " ";
if(count < 0) count = 10;
}
})();
document.getElementById("bnLink2").onclick = (function() {
var count = 10;
return function() { document.getElementById("bnConsole").value += count-- + " ";
if(count < 0) count = 10;
}
})();
でもこれは、同じコード二回書いてるからよけい無駄な気がする。for(var i = 1; i < 3; i++) {
document.getElementById("bnLink" + i).onclick = (function() {
var count = 10;
return function() { document.getElementById("bnConsole").value += count-- + " ";
if(count < 0) count = 10;
}
})();
}
いや、これだとパフォーマンスに影響が出て本末転倒か。Home > JavaScript > クロージャに苦戦中(JavaScript)