[過去ログ] + JavaScript の質問用スレッド vol.99 + (1001レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
428: 2012/04/26(木)18:03 ID:??? AAS
>>424
他を汚さないという意味ではいいんじゃない?
429
(5): 2012/04/26(木)18:28 ID:PXIqKkIS(1) AAS
>>427
クロージャの使い方を知りたいのでコード書いてくれませんか?
変数名を保護できるという利点は理解できました。
430: 2012/04/26(木)18:34 ID:??? AAS
ググったらすぐ見つかるよ
分かってるならあと少しだ
431
(3): 2012/04/26(木)19:08 ID:??? AAS
>>429
<body>
<div id="w01">ここをクリックとalertが出てくる</div><br><br>
<div id="w02">ここをクリックとalertが出てくる</div>
<script type="text/javascript">
var Slider=function(kp){this.pp=kp;};
Slider.prototype.init=function(popo){var cnt=popo;
document.getElementById(this.pp).onclick=function(){alert(cnt);cnt++;}};
var aa=new Slider("w01");
aa.init(0);
省3
432
(1): 431 2012/04/26(木)19:18 ID:??? AAS
>>429
クロージャってのは関数の中に関数がある
こんな感じで、cntの値を書き換えていく。
クロージャ使うと、「id=w01とw02を押した時に出るalert
が1ずつ加算されてく」とかのプログラムが可能。
newとprototypeと共に使って、id=""が何個増えても
var aa=new Slider()でnewで関数呼び出すと、
変数がaaのただ1つで済む。
433: 2012/04/26(木)19:44 ID:??? AAS
クロージャの利点と変数がただ一つで済むのは関係ないだろ
つーか読みにくすぎるぞ
全角スペース使ってのインデントと改行ぐらいしろよ
434: 2012/04/26(木)19:46 ID:??? AAS
わざとだよ言わせんな
435
(1): 2012/04/26(木)19:49 ID:??? AAS
AA省
436
(1): 2012/04/26(木)19:55 ID:??? AAS
(function (kp) {
    var cnt = 0;
    document.getElementById(kp).onclick = function () {
        alert(cnt);
        cnt++;
    };
    return arguments.callee;
})("w01")("w02");
437
(1): 2012/04/26(木)19:59 ID:??? AAS
>>435
newする意味あるの?
438
(1): 427 2012/04/26(木)20:00 ID:??? AAS
>>429
まず、これで何が表示されるかという話だよな

for (var i = 0; i<5; i++) {
 setTimeout(function() {
  alert(i);
 },1000);
}
439: 2012/04/26(木)20:01 ID:??? AAS
0が1回表示されて終わりじゃね
440: 2012/04/26(木)20:05 ID:??? AAS
いや5回表示されるだろ。
441: 2012/04/26(木)20:09 ID:??? AAS
setTimeoutの中が実行されるときはすでにi=5になってるから5がループの数5回表示される
442
(4): 2012/04/26(木)20:10 ID:??? AAS
>>438
それ書くならこっちも書いとこうよ
for (var i = 0; i<5; i++) {
 setTimeout(function(i) {
  alert(i);
 }(i),1000);
}
443: 2012/04/26(木)20:12 ID:??? AAS
>>442
なんじゃそれ
444: 2012/04/26(木)20:24 ID:??? AAS
>>437
thisなくした時点で
要らねーなw
445: 2012/04/26(木)20:27 ID:??? AAS
>>436
面白いとは思うがそこまで行くとちょっと使いづらいな
関数のままでいい
446: 427 2012/04/26(木)20:29 ID:??? AAS
続きは>>429を名乗る人が現れてからと思っていたが、
待たずに別解を書いておこう
これだと>>442と違ってsetTimeoutの外に他の処理も書ける

for (var i = 0; i<5; i++) {
 (function(ii) {
  setTimeout(function() {
   alert(ii);
  },1000);
  // ここに他の処理
 })(i);
省3
447
(1): 431 2012/04/26(木)20:56 ID:??? AAS
そういや
(function() {
処理
})()
ってたまにみるが、いまいちわからん。解説頼みます。
1-
あと 554 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.197s*