2

1-以下のコードを実行すると、代わりに「a = 1」が見つかりませんでしたか?

function f1(){a=1; f2();}
function f2(){return a;}
var a= 5;
a = f1();
​alert(a);​

この例のように、結果は「a=1」です。

function f1(){a=1; f2();}
function f2(){alert(a);}
var a= 5;
f1();
4

7 に答える 7

6

a = f1();

呼び出しの結果をに割り当てていf1ますa。それでも、f1何も返さず、に評価されundefinedます。return次のステートメントを使用する必要があります。

function f1(){a=1; return f2(); }

ところで、これはスコープの問題ではありません。関数にローカルな変数はありません。すべてが同じにアクセスしますa

于 2012-09-17T15:34:48.620 に答える
1

値を取得するためのreturnステートメントをおそらく忘れています

function f1(){a=1; return f2();}
function f2(){return a;}
var a= 5;
a = f1();
​alert(a);​
于 2012-09-17T15:34:52.893 に答える
1

f1何も返さないので、以下を試してください

function f1(){a=1; return f2();}
function f2(){return a;}
var a= 5;
a = f1();
​alert(a);​

あまり意味がない場合でも

于 2012-09-17T15:34:53.933 に答える
0

から明示的に戻る必要がありますf1

于 2012-09-17T15:35:11.190 に答える
0

最初の例の関数f1は値を返さなかったので、それが理由です

于 2012-09-17T15:35:11.653 に答える
0

行の間にa=f1(); f1関数は何も返さないため、aはundefinedに設定されます。

私はあなたがやろうとしていることに前向きではありません。さらに追加すれば、私はそれをあなたが望むことをさせる方法について提案をすることができます。

于 2012-09-17T15:35:14.617 に答える
0

f1()値を返しません。何も返さないことは、undefinedを返すことと同じです。

于 2012-09-17T15:36:25.500 に答える