ページで実行されるすべてのコードに表示される必要がある変数を初期化する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. どのように変数をグローバルに宣言しますか?ケースforeach? Javascript
- 2. AS3グローバル変数をどのように宣言しますか?
- 3. コード・イグナイターでは、グローバル変数はどこで宣言すべきですか?
- 4. グローバル変数宣言問題
- 5. この状況でグローバル変数を宣言するには?
- 6. MATLABでグローバル変数を宣言する
- 7. Ext.Componentをグローバル変数として宣言できますか?
- 8. Javascriptでグローバル変数を宣言する方法
- 9. 再宣言はJavaScript変数
- 10. グローバルなRequest.ServerVariable変数を宣言する
- 11. グローバル変数をQMLファイルで宣言できますか?
- 12. proc宣言のTclグローバル変数
- 13. Zend Frameworkは変数の宣言をグローバルとしてオフにしますか?
- 14. Javascript変数宣言問題
- 15. Angular2 CanActivateグローバル関数宣言
- 16. 私はトリガ内の変数を宣言できますか?
- 17. elfファイル内のグローバル変数はどこにありますか
- 18. PHPでグローバル変数を宣言するには?
- 19. Reactでグローバル変数を宣言する方法は?
- 20. はどのように宣言し、NSStringのにグローバル定数
- 21. Javascript変数のスコープ内で宣言されていない
- 22. すべてのPHPクラスのコンストラクタで変数をグローバルに宣言しなくても、変数をグローバルに表示させることはできますか?
- 23. 一般的に宣言された変数をグローバル変数として宣言することに利点はありますか?
- 24. グローバルCSSプロパティを宣言しますか?これは可能ですか?
- 25. Pythonモジュールの場合、宣言する標準グローバル変数は何ですか?
- 26. Objective-C switch文内で変数を宣言できますか?
- 27. JavaScriptの変数の宣言と設定
- 28. ループ内で宣言された変数
- 29. .jsファイルでグローバル変数を宣言する方法
- 30. AngularJsでグローバル変数を宣言する方法2