ページで実行されるすべてのコードに表示される必要がある変数を初期化するJavaScriptコードスニペットを配置する必要はありますか? (たとえば、要素のイベントハンドラはこの変数にアクセスする必要があります)。ウェブページ内のグローバルJavaScript変数はどこで宣言しますか?
答えて
「var」キーワードを使用せずに、どの関数または関数でも実行できます。スクリプトがその値を読むことができるように、他のスクリプト(ページの一番上)の前にそれを割り当てます。
これはインクルードされたJSファイルに配置することもできますが、通常はグローバル値を簡単に見ることができるため、ページ上に配置する方が使いやすく、ページごとにサーバーサイドコードで変更できます。また、体内に大域変数を割り当てることを避けようとすると、混乱を招き、読みにくくなります。
<head>
<script>
var numberOfDucks = 1000; // Global
function some_function() {
// numberOfDucks is accessible here
alert (numberOfDucks);
// until you mask it by defining a local variable using the 'var' keyword
var myLocal = 0; // is a local
anotherGlobal = 0; // is a global
}
</script>
<script>
// potentially some other script
</script>
<script src="even_more_script.js">
</head>
大域的な関数(implied-global)を定義することは、多大な混乱を招くため、良い考えではありません。
<head>
<script>
var b = 0;
</script>
<script src="...">
</head>
<body>
...
</body>
変数をグローバル変数になるように任意の関数から外して宣言します。
ここにグローバル変数の例を示します。最初の関数はグローバルを使用しますが、2番目の関数はグローバルをマスクする同じ名前のローカル変数を使用します。
var globalVar = 1;
function testFunc1() {
globalVar = 2; //Updates the global variable
}
function testFunc2() {
var globalVar = 5; // This variable masks the global and only updates within the scope of this function
globalVar = 3;
}
また、スニペットは他の参照の前にグローバルを初期化する必要があると述べました。このためには、できるだけ要素内の他のjavascript参照の前に、スクリプトブロックまたはjavascriptファイルへの参照を配置することをお勧めします。グローバル変数に依存する他のjavascriptファイルがある場合、defer属性を使用して残りのページが最初にロードされるまでロードされないようにすることができます。
<script src="dependant.js" type="text/javascript" defer="defer"></script>
もう1つの選択肢は、初期スクリプトがロードされた後に依存スクリプトを動的に追加することです。あなたは次のようにjQueryのようなものを使用してこれを行うことができます。
$(window).load(function() {
$.getScript('dependant.js');
});
グローバル変数を持たないためにだけの方法は、関数のスコープでvar
キーワードを使用することです。それ以外はグローバル変数です。
(function() {
var local = 5;
})();
関数リテラルまたは関数定義であれば、それは、機能のいくつかのタイプであることをを持っている問題ではありません。
グローバル変数の例:
:上記
var global = 5;
、関数スコープにvar
を用いても、したがってグローバルありません。
2。上記で
(function() {
global = 5;
})();
、何var
を使用しないので、暗黙のグローバルなるました。
function foo(){}
foo
他の機能の中で定義またはグローバルにアクセス可能なので、対象キーに割り当てられていませんでした。
4.
(function() {
var local = global = 5;
})();
var
と複数の割り当てを行う場合、最初の変数はローカルになり...そうglobal
は、グローバル変数で、5
に相当します5.
window.foo = 5;
接頭辞window.
は、ブラウザのコンテキストでグローバル変数を明示的に定義する方法です。 DOMWindowへ
6.ブラウザでデフォルトで
this.x = 5;
、
this
のポイントを
window
ないオブジェクトに添付されます方法でない限り。 #5と同じです。 XMLHttpRequestのようなメソッドを使用する場合、コンテキストはウィンドウのものであることに注意してください。
7.
with (window) { name = 'john'; }
あなたがwith
ステートメントを使用し、すでにプロパティを持つオブジェクトを参照いけない場合は、グローバル変数が定義されています。一般的にはwith
キーワードを使用しないようにしてください。
結論:個人的に
、私は無名関数のスコープで私のコードを続けるだろう、と私はする必要があるときだけ明示的にグローバルを宣言します。上記で
(function() {
var governor = 'Schwarzenegger',
state = 'California';
window.president = 'Obama';
})();
、私はgovernor
とstate
変数を定義し、彼らは私の関数に対してローカルです。グローバル変数としてpresident
を明示的に定義したいと思います。このように、グローバル変数として定義した変数については混乱しません。なぜなら、それらに明示的に接頭辞window.
が付加されているからです。
(あなたはどこでもそれを見えるようにしなければならなかった場合は、グローバルスコープで)あなたは、ページの先頭にその変数を置くことができますが、私は二つのこと
1を示唆して)あなたはスクリプトブロックを開く必要があるため、避けますスクリプトがレンダリングをブロックするので、あなたのページの本文の中にそれを宣言します。だから、簡単なVARを作成していますが、グローバルスコープを汚染しないように、これは良い練習が順序である
<script>
var YOUR_APP_NS = {};
YOUR_APP_NS.yourvar = ....
</script>
識別子衝突の危険性を減らすように、代わりに名前空間を使用するだけで</head>
2)を回避する前にそれを置きます。あなたはこのようにいくつかのプロパティpublic varが必要な場合は、単に
YOUR_APP_NS.yourvar1 = ....
YOUR_APP_NS.yourvar2 = ....
YOUR_APP_NS.yourvarN = ....
を書くことができますが、グローバルvarがまだ1
です- 1. グローバル変数は、私はheader.phpのファイルにJavaScriptでグローバル変数を宣言
- 2. どのように変数をグローバルに宣言しますか?ケースforeach? Javascript
- 3. AS3グローバル変数をどのように宣言しますか?
- 4. Gradleのグローバル変数宣言
- 5. コード・イグナイターでは、グローバル変数はどこで宣言すべきですか?
- 6. Javascriptでグローバル変数を宣言し、グローバル変数を変更してグローバル変数を呼び出すにはどうすればよいですか?
- 7. グローバル変数宣言問題
- 8. 私はグローバル変数を宣言しましたが、ここでは機能
- 9. この状況でグローバル変数を宣言するには?
- 10. Scala akka:受信関数内でグローバル変数を宣言する
- 11. グローバル変数として宣言することなく、Pythonでグローバル変数を使用できますか?
- 12. MATLABでグローバル変数を宣言する
- 13. Ext.Componentをグローバル変数として宣言できますか?
- 14. xsd:attribute宣言はどこでグローバルxsd:complexTypeに入りますか?
- 15. Javascriptでグローバル変数を宣言する方法
- 16. Javascriptでグローバル関数宣言をオーバーライドします。
- 17. MySQLクエリノード内でグローバル変数を宣言する
- 18. jquery .getメソッド内でグローバル変数を宣言する
- 19. リストをグローバル変数として宣言しますか?
- 20. React.jsのグローバル変数宣言のベストプラクティスは何ですか?
- 21. 再宣言はJavaScript変数
- 22. グローバル変数をQMLファイルで宣言できますか?
- 23. グローバルなRequest.ServerVariable変数を宣言する
- 24. グローバル変数を宣言する
- 25. proc宣言のTclグローバル変数
- 26. MediaPlayerのグローバル変数をどのように宣言しますか?
- 27. 宣言型パイプラインでグローバル変数をどのように扱いますか?
- 28. Zend Frameworkは変数の宣言をグローバルとしてオフにしますか?
- 29. Javascript変数宣言問題
- 30. Pythonクラスがグローバル変数をグローバルに宣言せずにグローバル変数を変更しています