CloudCloudCloudってのを作ってまして。
Facebook上で zonoise さんにいろいろ教えてもらってて。
で指摘受けたところをなおそうとしてたらハマったわけです、setIntervalの挙動に。

<script type="text/javascript">
var interval = 1000
for( var num = 0 ; num < 12 ; num ++ ){
    alert("1:" + num);      // 1
    setInterval(function(){
        alert("2:" + num);  // 2
    },interval);
    alert("3:" + num);      // 3
}
</script>

でbashでいうところの

interval=1
fuction setInterval()
{
  sleep $1
}
for num in `seq 0 11`
do
  echo "1:${num}"
  echo "2:${num}"
  setInterval ${interval}
  echo "3:${num}"
done

みたいなのを想像してた。
1 → 2 → setInterval(つまりsleep) → 3 → 1 → 2 → setInterval(つまりsleep) → 3 …
と実行されるだろう、という期待をしてたので、
1 → 3 → setInterval(つまりsleep) → 1 → 3 → setInterval(つまりsleep) → 1 → 3 → setInterval(つまりsleep) … → 2 → 2 → 2 → …
みたいな挙動に面食らったわけです。
で、Twitter上でotherworldyさんにもアドバイス受けたりしてようやく理解したわけですねー。

for(i=0;i<10;i++){
  setInterval(function(){ action(i);  },INTERVAL);}
}
action2;

ってのは、
INTERVALが過ぎないとsetIntervalで括ったfunction(){ action(i) }は、
全く実行されないんですね。
でその外側においておいた for の i++ がどんどん実行されるがために、
action の引数として利用しようと考えていたfor文由来の変数iが、
forの想定した最大値まで達しちゃうわけですねー。

「じゃあお前は結局どうしたのか?」っていうと
for文を使うのをやめました。
そもそもsetIntervalがループの役目果たしてたので、

var i=0
setInterval(function(){
  action(i);
    if( i >= 10 ){ action2;}
    i++;
  },INTERVAL);}
}

としました。すげーすっきりした。
※ちなみに action2 には “window.location.reload();” を想定していた。

 
#!/bin/sh
workdir=/usr/local/src/rubysrc
ver_major='1.9'
ver_major_minor='1.9.2'
_patch_or_stable='p290'
_ext='tar.gz'
_prefix='/usr/local/ruby'
_arc=`uname -i`

_ruby_srcpackage="ruby-${ver_major_minor}-${_patch_or_stable}"
_url="http://ftp.ruby-lang.org/pub/ruby/${ver_major}"

yum install zlib.${_arc} zlib-devel.${_arc} -y

rubysrc_url="${_url}/${_ruby_srcpackage}.${_ext}"
noruby='noexist'
ls ${_prefix}/bin/ruby && noruby='installed'
if [ ! "${noruby}" = 'installed' ] ; then
  if [ ! -e ${workdir} ] ; then
          mkdir ${workdir}
        fi
        cd ${workdir} && \
          wget ${rubysrc_url} > /dev/null 2>&1  && \
          tar zxvf ${_ruby_srcpackage}.${_ext} && \
          cd ${_ruby_srcpackage} && \
          ./configure --prefix=${_prefix} && \
          make && make install && ${_prefix}/bin/ruby -v
        echo "export PATH=${_prefix}/bin:\$PATH"
else
  echo "\nRuby was installed\n"
fi
© 2012 # watch -d tail /var/log/ngsw.log Suffusion theme by Sayontan Sinha