変数が定義されているかどうかを確認したかったのです。たとえば、次の例では未定義のエラーがスローされます
alert( x );
このエラーをキャッチするにはどうすればよいですか?
変数が定義されているかどうかを確認したかったのです。たとえば、次の例では未定義のエラーがスローされます
alert( x );
このエラーをキャッチするにはどうすればよいですか?
JavaScriptでは、null
はオブジェクトです。存在しないものには別の価値がありますundefined
。DOMはnull
、ドキュメント内で構造が見つからないほとんどすべての場合に返されますが、JavaScript自体undefined
では使用される値です。
第二に、いいえ、直接同等のものはありません。特にを確認したい場合はnull
、次のようにします。
if (yourvar === null) // Does not execute if yourvar is `undefined`
変数が存在するかどうかを確認する場合は、try
/catch
でのみ実行できます。これtypeof
は、宣言されていない変数と、の値で宣言された変数undefined
を同等のものとして扱うためです。
しかし、変数が宣言されているかどうかを確認するには、次のようにしundefined
ます。
if (yourvar !== undefined) // Any scope
以前は、変数と同じようtypeof
に再割り当てが可能であったため、演算子を使用して未定義を安全にチェックする必要がありました。undefined
古い方法は次のようになりました。
if (typeof yourvar !== 'undefined') // Any scope
undefined
再割り当ての問題は、2009年にリリースされたECMAScript 5で修正されました。これまで、読み取り専用であったため、使用せずに安全に使用===
および!==
テストできるようになりました。undefined
typeof
undefined
メンバーが独立して存在するかどうかを知りたいが、その値が何であるかを気にしない場合:
if ('membername' in object) // With inheritance
if (object.hasOwnProperty('membername')) // Without inheritance
変数が真であるかどうかを知りたい場合:
if (yourvar)
変数が正しいかどうかを真にテストする唯一の方法undefined
は、次の手順を実行することです。undefined は JavaScript のオブジェクトです。
if (typeof someVar === 'undefined') {
// Your variable is undefined
}
このスレッドの他の解決策の中には、変数が定義されていても (たとえば、NULL または 0 の値で) 変数が未定義であると信じるように導くものがあります。
技術的には、適切な解決策は次のとおりです(私は信じています):
typeof x === "undefined"
あなたは時々怠惰になって使用することができます
x == null
ただし、これにより、未定義の変数xとnullを含む変数xの両方がtrueを返すことができます。
さらに簡単で簡略版は次のようになります。
if (!x) {
//Undefined
}
また
if (typeof x !== "undefined") {
//Do something since x is defined.
}
私はよくやった:
function doSomething(variable)
{
var undef;
if(variable === undef)
{
alert('Hey moron, define this bad boy.');
}
}
三項条件演算子も使用できます。
var a = "hallo world";
var a = !a ? document.write("i dont know 'a'") : document.write("a = " + a);
//var a = "hallo world";
var a = !a ? document.write("i dont know 'a'") : document.write("a = " + a);
私はしばしば最も簡単な方法を使用します:
var variable;
if (variable === undefined){
console.log('Variable is undefined');
} else {
console.log('Variable is defined');
}
編集:
変数を初期化しないと、「Uncaught ReferenceError: variable is not defined...」という例外がスローされます。
次のように確認できundefined
ます
var x;
if (x === undefined) {
alert("x is undefined");
} else {
alert("x is defined");
}