ローカル変数を他の関数内で使うには?

[上に] [前に] [次に]
おがまん [E-Mail] [HomePage] 1999/09/26(日) 05:14:13
ある関数内で使っているローカル変数を、
他の関数内でも使えるようにするにはどうしたらいいですか?
例えば、
var i=0;
function a(){
  timeSetout("a()",1000);
  i++;}
で変化している変数iを
function b(){
  top.location.href=i+".html";}
の中でも使いたいです。

function a()は<body onLoad="a()">
で使って、
function b()は<a href="JavaScript:b()">リンク</a>
で使いたいです。

JavaScriptを勉強し始めて、まだまだなので、ぜんぜん解決方法がわかりません。
どうか、お願いします。

J.Naka 1999/09/26(日) 13:18:32
JavaScriptは、まだ超初心者なんで、言語特有の細かい動きとか把握してないのですが、一般的なところを。

 ローカル変数とは、関数内でのみ有効&関数外からは見えないからローカルと言うのであって、関数を跨いで使用できる変数はグローバル変数です。

 さて、おがまんさん提示のコードの var i=0; は関数外で宣言されているので、グローバル変数となってます。だから、i は、全ての関数から操作することが出来ます。

----------
補足:
 ローカル変数は、関数毎に独立というだけでなく、呼ばれた関数毎に独立。つまり、呼ばれる毎に独立ということ。
 ローカル変数iを持つAという関数を呼ぶと、呼ばれた時点てiが生成されます。で、今呼んだAが終了する前に、更にAを呼ぶ(A’とする)とi(i’とする)が新たに生成されます。この、iとi’は全く別物です。独立してます。そして、関数の終了時点でiとi’は消えてなくなります。これが、関数内のローカル変数という物の動作実体です。
#さてさて、外して無い事を願います(^^;

おがまん 1999/09/26(日) 15:27:37
[[解決]]
解答,ありがとうございました.
グローバルとローカルの違いをなんだか,勘違いしてたみたいでした.

[上に] [前に] [次に]