"Satoshi Nakajima" <nakajima@chem.gunma-ct.ac.jp> wrote in message
news:bs5nov$lnq$1@x1wa.gunma-ct.ac.jp...
> (少なくとも ie6.0/win98 の僕の環境では)増減式のところに、
> 関数を用いても大丈夫なようです。
>

ECMA 262 の規格に準拠しているなら,関数でもよいというのは不思議でもないと思
います。
ただ,次のようなものも一応動くようですが,これが正常な動作と言い切れるような
var i のスコープについて明確に記載されたものはあるのでしょうか。(ちょっと調
べたけど見つけれませんでした。)

   var x = new Array('0','1','2','3','4','5','6','7','8','9');

   document.write('---not recommend---' + '<BR>');
   for(var i = 2; i < x.length; i++){
      if (i == 5) i = 7;
      document.write(x[i] + '<BR>');
   }

   document.write('-----i = incre()------' + '<BR>');
   for(var i = 2; i < x.length; i = incre()){
      document.write(x[i] + '<BR>');
   }

   document.write('------incre()-------' + '<BR>');
   for(var i = 2; i < x.length; incre()){
      document.write(x[i] + '<BR>');
   }

   document.write('------incre1()-------' + '<BR>');
   for(var i = 2; i < x.length; incre1()){
      document.write(x[i] + '<BR>');
   }

   function incre(){
      do
      i++;
      while (!(i < 5 || i >= 7))
      return i;
   }

   function incre1(){  // return文なし
      do
      i++;
      while (!(i < 5 || i >= 7))
   }

あっ,一番上のはvar i のスコープとはなんの関係もありません。ただ直接変数var
i をいじっても動くには動くというだけです。(もちろん,余程の時でないとやりま
せんが)
それから,当然ですが
for(var i = 2; i < x.length; incre(i))
としたのでは,永久にiが変化しないので動きませんが。


-- 
******************************
   keizi kounoike
******************************