web-dev-qa-db-ja.com

変数が存在するかどうかわからない場合、変数を未定義と比較する方法は?

JavaScriptでは変数を宣言でき、undefinedの場合はvariable == undefined;を確認できます。私はそれを知っていますが、まだメモリにあるかどうかわからない値をどのように比較できますか?

たとえば、ユーザーがボタンをクリックすると作成されるクラスがあります。これ以前は、クラスは未定義です-どこにも存在しません。どうやって比較できますか?

trycatchを使用しない方法はありますか?

90
ncubica

undefined/null/falseはJSでは扱いにくいため、最良の方法はtypeをチェックすることです。そう:

if(typeof obj !== "undefined") {
    // obj is a valid variable, do something here.
}

typeofは常に文字列を返し、変数がまったく存在しない場合でもエラーを生成しないことに注意してください。

176
Makram Saleh
if (obj === undefined)
{
    // Create obj
}

大規模なJavaScriptプログラミングを行っている場合は、タイプ固有のチェックを行いたいときに===および!==を使用する習慣を身に付ける必要があります。

また、かなりの量のjavascriptを実行する場合は、JSLintを介してコードを実行することをお勧めします http://www.jslint.com 最初は少し厳しいと思われるかもしれませんが、ほとんどのことはJSLintは、あなたに噛み付くために最終的に戻ってくると警告しています。

50
Timmy
if (document.getElementById('theElement')) // do whatever after this

エラーをスローする未定義のものについては、変数名だけではなく、親オブジェクトのプロパティ名をテストします。

if (blah) ...

行う:

if (window.blah) ...
2
Delan Azabani

!undefinedはjavascriptでtrueであるため、変数またはオブジェクトが定義されていないかどうかを知り、アクションを実行したい場合は、次のようにできます。

if(<object or variable>) {
     //take actions if object is not undefined
} else {
     //take actions if object is undefined
}
1
Mr.Hunt
if (!obj) {
    // object (not class!) doesn't exist yet
}
else ...
0
Thevs