"Satoshi Nakajima" <nakajima@chem.gunma-ct.ac.jp> wrote in message
news:bsc07a$e1h$1@x1wa.gunma-ct.ac.jp...

> kounoike さんの書かれる関数「increin()」「increout()」ともに、「return i」
で変数
> i を返す形で書いておきながら、実行の段階では、「i = (関数)」とせずに、単
に関数
> を実行している点で、仕様外の書き方かな、と感じてしまうところはあります。変
数がグ
> ローバルであることを期待して、関数の実行により変数を変化させておいてそれを
外から
> 参照しようとしているなら、return 文が意味を為さないと思うのです。

ナカジマさん,こんちわ。returnで値を返す関数を利用する場合,呼び出し側でその
値を利用しなければならないと言うような仕様上の制限はないと思います。変数のス
コープを調べたかったので,初めからreturn 文には何の意味も持たせていません
し,引数も与えていません。

> kounoike さんはきっとお判りの上で、動かないソース例を挙げられたのでしょう
が、念
> のため、動く(はずの)ソースも書いておきます。ローカル変数であることを強調
して、
> k, j を使っていますが、i で書いても動くはずです。
>

関数に引数渡しで,リターン値を利用するのでは上にも書いたようにスコープとは何
の関係も無くなるので,意図的に普通じゃない使い方をしました。そうでなければ,
ナカジマさんが下に書いたような関数の書き方が普通の書き方ですが。まあ,引数に
関しては値渡しなので引数の記号が゜k, j, i, だろうが元のiとは何の関係もないの
でなんであろうと動くのは自然だと思います。

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

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