995

変数が定義されているかどうかを確認したかったのです。たとえば、次の例では未定義のエラーがスローされます

alert( x );

このエラーをキャッチするにはどうすればよいですか?

4

15 に答える 15

1796

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で修正されました。これまで、読み取り専用であったため、使用せずに安全に使用===および!==テストできるようになりました。undefinedtypeofundefined

メンバーが独立して存在するかどうかを知りたいが、その値が何であるかを気にしない場合:

if ('membername' in object) // With inheritance
if (object.hasOwnProperty('membername')) // Without inheritance

変数が真であるかどうかを知りたい場合:

if (yourvar)

ソース

于 2009-05-13T14:11:30.320 に答える
381

変数が正しいかどうかを真にテストする唯一の方法undefinedは、次の手順を実行することです。undefined は JavaScript のオブジェクトです。

if (typeof someVar === 'undefined') {
  // Your variable is undefined
}

このスレッドの他の解決策の中には、変数が定義されていても (たとえば、NULL または 0 の値で) 変数が未定義であると信じるように導くものがあります。

于 2009-05-13T14:53:55.867 に答える
72

技術的には、適切な解決策は次のとおりです(私は信じています):

typeof x === "undefined"

あなたは時々怠惰になって使用することができます

x == null

ただし、これにより、未定義の変数xとnullを含む変数xの両方がtrueを返すことができます。

于 2009-05-13T14:12:29.943 に答える
20

さらに簡単で簡略版は次のようになります。

if (!x) {
   //Undefined
}

また

if (typeof x !== "undefined") {
    //Do something since x is defined.
}
于 2009-05-13T14:26:03.493 に答える
16

私はよくやった:

function doSomething(variable)
{
    var undef;

    if(variable === undef)
    {
         alert('Hey moron, define this bad boy.');
    }
}
于 2009-05-13T14:45:39.000 に答える
2

三項条件演算子も使用できます。

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);

于 2016-02-12T12:02:28.917 に答える
2

私はしばしば最も簡単な方法を使用します:

var variable;
if (variable === undefined){
    console.log('Variable is undefined');
} else {
    console.log('Variable is defined');
}

編集:

変数を初期化しないと、「Uncaught ReferenceError: variable is not defined...」という例外がスローされます。

于 2015-12-09T08:44:22.770 に答える
1

次のように確認できundefinedます

var x; 

if (x === undefined) {
    alert("x is undefined");
} else {
     alert("x is defined");
}
于 2016-07-04T17:17:18.303 に答える