0

私はJavaScriptで小さな仕事をしていますが、問題を避けたいので、事前に質問しています。

これらの関数の一方が他方を呼び出す場合、2つの異なる変数を使用して、それらを異なる関数で同じ名前にすることはできますか?

したがって、2番目の関数で変数を定義すると、2つの異なる変数として解釈されますか、それとも最初の関数から元の変数の値を書き換えますか?(または、その名前の変数がすでに存在するためにエラーがスローされますか?)

次に例を示します。

function first()
{
var a = somevalue;
second();
}

function second()
{
var a = differentvalue;
}

ありがとう!

4

2 に答える 2

3

関数内で宣言された変数はその関数に対してローカルであり、他の場所で同じ名前の変数と競合しません。

同じ名前のグローバル変数を使用することもでき、関数内のコードにはローカル変数のみが表示されます。

例:

var a; // global variable

function first() {
  var a; // local variable in first
  second();
}

function second() {
  var a; // local variable in second
}

(もちろん、グローバル変数の使用はできるだけ少なくする必要がありますが、存在する可能性のあるグローバル変数の影響を受けないローカル変数を使用できることを知っておくとよいでしょう。)

関数内のローカル変数は、関数に対してローカルであるだけでなく、実際には関数の実行に対してローカルです。関数を再度呼び出すと、新しい変数が作成され、関数がそれ自体を呼び出す(再帰)と、各レベルに独自の変数があります。

于 2013-03-27T14:16:38.907 に答える
2

はい、キーワードを忘れない限り可能です。var変数のスコープは、それが宣言されている関数またはグローバルスコープのいずれかです。関数の外部から、関数が宣言する変数にアクセスする方法はありません。

于 2013-03-27T14:06:20.877 に答える