web-dev-qa-db-ja.com

オブジェクトがActionScriptで定義されているかどうかをテストする

ActionScriptでは、オブジェクトが定義されているかどうか、つまりnullでないかどうかをどのようにテストできますか?

28
Matthew Shanley

オブジェクトが定義されているかどうかをテスト

これはAS2とAS3で機能し、オブジェクトに値があるかどうかをテストする最も信頼できる方法です。

if (obj != null) {
    doSomethingWith(obj);
}

また、オブジェクトのプロパティをテストして同じ式で読み取るための最も信頼できる方法です。

if (arr[0] != null && arr[0]>5) {
    doSomethingWith(arr[0]);
}

オブジェクトがnullかどうかをテスト

Nullとundefinedの間には違いがありますが、気にならない場合は、同等に比較するため、どちらか一方の間で通常の比較を行うことができます。

if (obj == null) {
    doSomethingWith(obj);
}

と同じです

if (obj == undefined) {
    doSomethingWith(obj);
}

違いを気にする場合は、===または!==演算子を使用してください。これらは変換されません。

if (obj === undefined) {
    // obj was never assigned a value
}
else if (obj === null) {
    // obj was explicitly set to null
}
else {
    doSomethingWith(obj);
}
35
Matthew Crumley

ActionScript 3. の場合、nothingnessの一般的なテストが必要な場合は、非常に簡単です。

_var a;
var b;
var c;
var d;
a = undefined;
b = null;
c = 5;
if (a) 
    trace(a);
if (b) 
    trace(b);
if (c) // Will trace
    trace(c); 
if (d) 
    trace(d);
_

上記の例では、cのみがトレースされます。これは通常私が必要とするものであり、if (obj)をチェックするだけが最も読みやすいバージョンです。

このメソッドは、boolean coercionとも呼ばれるブール値への暗黙の変換を使用し、どの値がfalseに強制され、どの値が強制されるかの詳細true ECMA標準に準拠 および ActionScript専用に文書化されています でもあります。

8
bzlm

Nullに対してテストするだけです。

var someObj:Object = getSomeObjectOrMaybeNull();
if(someObj == null) {
  trace("someObj is null!");
} else {
  trace("someObj is not null!");
}
3
Herms