JSLint はこれを有効なコードとして渡しません:
/* global someVar: false */
if (typeof someVar === "undefined") {
var someVar = "hi!";
}
正しい方法は何ですか?
JSLint はこれを有効なコードとして渡しません:
/* global someVar: false */
if (typeof someVar === "undefined") {
var someVar = "hi!";
}
正しい方法は何ですか?
/*global window */
if (window.someVar === undefined) {
window.someVar = 123456;
}
if (!window.hasOwnProperty('someVar')) {
window.someVar = 123456;
}
/**
* @param {string} nameOfVariable
*/
function globalExists(nameOfVariable) {
return nameOfVariable in window
}
グローバル変数を var foo または window.foo のどちらで作成したかは問題ではありません — グローバル コンテキストで var を使用して作成された変数は、window に書き込まれます。
まだ存在しない場合にのみグローバル変数を割り当てたい場合は、次を試してください。
window.someVar = window.someVar || 'hi';
また
window['someVar'] = window['someVar'] || 'hi';
試す
variableName in window
また
typeof window[variableName] != 'undefined'
また
window[variableName] !== undefined
また
window.hasOwnProperty(variableName)
これは実際にはJSLintの問題だと思います。次のエラーが発生します。
予期しない 'typeof' です。「未定義」と直接比較してください。
これは悪いアドバイスだと思います。JavaScript ではundefined
、通常未定義のグローバル変数です。ただし、一部のブラウザでは、次のようにスクリプトで変更できますwindow.undefined = 'defined'
。この場合、 と直接比較すると、undefined
予期しない結果が生じる可能性があります。幸いなことに、現在の ECMA 5 準拠のブラウザーでは、への割り当てが許可されていませんundefined
(厳密モードでは例外がスローされます)。
typeof someVar === "undefined"
あなたが投稿したように、またはsomeVar in window
スーセイが提案したように、私は好きです。
if (typeof someVar === "undefined") { var someVar = "hi!"; }
someVar
(ローカルまたはグローバル)が未定義かどうかを確認します。
グローバル変数を確認したい場合は、使用できます
if(window['someVar'] === undefined) {
...
}
これがブラウザにあると仮定します:)
これは、チェックを実行する簡単な方法です。
variableName
ただし、が宣言され、 が割り当てられている場合、このチェックは失敗します。boolean value: false
if(window.variableName){
}
bfavaretto は正しくありません。
グローバル undefined を値に設定しても、オブジェクトのテストは undefined に対して変更されません。お気に入りのブラウザーの JavaScript コンソールでこれを試してください。
var udef; var idef = 42;
alert(udef === undefined); // Alerts "true".
alert(idef === undefined); // Alerts "false".
window.undefined = 'defined';
alert(udef === undefined); // Alerts "true".
alert(idef === undefined); // Alerts "false".
これは単に、未定義の変数に設定しようとしたすべての値を JavaScript が無視するためです。
window.undefined = 'defined';
alert(window.undefined); // Alerts "undefined".