JavaScriptを使用していて、グローバル変数を作成しています。関数の外で定義し、関数内からグローバル変数値を変更して別の関数から使用したいのですが、どうすればよいですか?
JavaScriptを使用していて、グローバル変数を作成しています。関数の外で定義し、関数内からグローバル変数値を変更して別の関数から使用したいのですが、どうすればよいですか?
回答:
関数内の変数を参照するだけです。魔法はありません。名前を使用してください。グローバルに作成されている場合は、グローバル変数を更新します。
この動作は、を使用してローカルで宣言することでオーバーライドできますvarが、を使用しない場合var、その変数がグローバルに宣言されていると、関数で使用される変数名はグローバルになります。
そのため、常にで明示的に変数を宣言することがベストプラクティスと見なされていますvar。それを忘れると、誤ってグローバルをいじり始める可能性があるためです。それは間違いを犯しやすいものです。しかし、あなたの場合、これは好転し、あなたの質問に対する簡単な答えになります。
console.logはがすぐに実行されるためです。しかし、ajax成功関数は、後でajax呼び出しが実際に応答を返すある時点でのみ実行されます。これは、ajaxの非同期の性質に関する基本的なポイントです。クロージャー関数内のコードは、その周りのコードと順番に実行されません。これは、イベント駆動型コードについて学ぶときに理解することが重要です。
var a = 10;
myFunction();
function myFunction(){
a = 20;
}
alert("Value of 'a' outside the function " + a); //outputs 20
その変数の名前を使用するだけです。
JavaScriptでは、変数が関数のパラメーターである場合、またはvar変数の名前の前にキーワードを入力して明示的にローカルとして宣言した場合、変数は関数に対してのみローカルです。
ローカル値の名前がグローバル値と同じ名前の場合、windowオブジェクトを使用します
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つのキーワードconstとが追加されましたlet。これらも変数のスコープに影響します(言語仕様)
<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>
var関数内でキーワードを使用しないでください。対処する必要はありませんdocument.getElementById("outside").value = x;
var a = 10;
myFunction(a);
function myFunction(a){
window['a'] = 20; // or window.a
}
alert("Value of 'a' outside the function " + a); //outputs 20
ウィンドウ[「variableNameに」]またはwindow.variableNameあなたは関数内でグローバル変数の値を変更することができます。