2013-05-25 7 views
5

あなたは完全なコードを表示する必要がある場合、私は知らないが、私はこれを行う、いくつかのプラグインを見てきました:これはwindowオブジェクトに「dataValidate」を追加しない、またはどのようにそれが動作しないJavaScriptでウィンドウオブジェクト(window.something = something)は何をしますか?

window.dataValidate = dataValidate 

を?

+0

同じ名前のグローバル変数に 'dataValidate'をコピーします。 – donkeydown

答えて

5

これはwindowオブジェクトに 'dataValidate' を追加してい

はい、それはなります。

たとえば、別のスコープの中にいる場合、

function foo() { 
    var bar = 4; 

    window.bar = bar; 
} 

あなたは今barグローバル作った、とどこでもからアクセスできます。 window.bar = barがなければ、あなたはfoo()の中でしかアクセスできませんでした。

これは一般に、IIFEの最後に使用されています。に公開します。を他の国に公開してください(例:jQuery)。

(function() { 
    var jQuery; 

    // Setup jQuery 

    window.jQuery = jQuery; 
}()); 

代わりにこれを行う人が表示される場合があります。

function foo() { 
    bar = 4; // Note the lack of `var` 
} 

これは、「暗黙のグローバル」の使用によって同じ効果があります。しかし、エラーがES5 strictモードで投げられ、一般的には悪い習慣と考えられています(プログラマーはグローバル化することを意味したのでしょうか、あるいは単に間違ってvarを省略しましたか?

+2

ES5 strictモードでのみエラーが発生します.ES5仕様の非厳密モードではエラーは発生しません。 –

+1

@ Qantas94Heavy:母親、訂正してくれてありがとう...私の脳は「ES5厳密モード」を書いていましたが、私のキーボードには他のアイデアがあったようです。 – Matt

+1

またはあなたの脳の一部が厳しいと思っていて、もう1人がそれを食べていた:-) – tgkprog

関連する問題