155

私は JavaScript を使用しており、グローバル変数を作成しています。関数の外で定義し、グローバル変数の値を関数内から変更して別の関数から使用したいのですが、どうすればよいですか?

4

6 に答える 6

167

関数内で変数を参照するだけです。魔法は使わず、その名前を使用してください。グローバルに作成されている場合は、グローバル変数を更新します。

を使用してローカルで宣言することにより、この動作をオーバーライドできますvarが、 を使用しないvar場合、変数がグローバルに宣言されている場合、関数で使用される変数名はグローバルになります。

そのため、常に変数を明示的に宣言することがベスト プラクティスと見なされますvar。それを忘れると、誤ってグローバルをいじり始める可能性があるためです。犯しやすい間違いです。しかし、あなたの場合、これは好転し、あなたの質問に対する簡単な答えになります。

于 2012-06-03T22:41:30.730 に答える
80
var a = 10;

myFunction();

function myFunction(){
   a = 20;
}

alert("Value of 'a' outside the function " + a); //outputs 20
于 2012-06-03T16:34:13.223 に答える
36

その変数の名前を使用するだけです。

varJavaScriptでは、変数が関数のパラメーターである場合、または変数名の前にキーワードを入力して明示的にローカルとして宣言した場合、変数は関数に対してのみローカルになります。

ローカル値の名前がグローバル値と同じ名前である場合は、windowオブジェクトを使用します

このjsfiddleを参照してください

x = 1;
y = 2;
z = 3;

function a(y) {
  // y is local to the function, because it is a function parameter
  console.log('local y: should be 10:', y); // local y through function parameter
  y = 3; // will only overwrite local y, not 'global' y
  console.log('local y: should be 3:', y); // local y
  // global value could be accessed by referencing through window object
  console.log('global y: should be 2:', window.y) // global y, different from local y ()

  var x; // makes x a local variable
  x = 4; // only overwrites local x
  console.log('local x: should be 4:', x); // local x
  
  z = 5; // overwrites global z, because there is no local z
  console.log('local z: should be 5:', z); // local z, same as global
  console.log('global z: should be 5 5:', window.z, z) // global z, same as z, because z is not local
}
a(10);
console.log('global x: should be 1:', x); // global x
console.log('global y: should be 2:', y); // global y
console.log('global z: should be 5:', z); // global z, overwritten in function a

編集

ES2015には、さらに2つのキーワードconstletがあります。これらは変数のスコープにも影響します(言語仕様) 。

于 2012-06-03T16:35:44.347 に答える
8
<script>
var x = 2; //X is global and value is 2.

function myFunction()
{
 x = 7; //x is local variable and value is 7.

}

myFunction();

alert(x); //x is gobal variable and the value is 7
</script>
于 2014-03-10T08:22:55.003 に答える