28

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

4

4 に答える 4

35

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

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

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

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

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

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

null と未定義には違いがありますが、気にしない場合は、比較が等しいため、通常の比較を行うことができます。

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);
}
于 2008-11-17T21:06:55.023 に答える
8

ActionScript 3.0の場合、必要なのがの一般的なテストだけであれば、それは非常に簡単です。

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)が最も読みやすいバージョンです。

このメソッドは、ブール値への暗黙の変換(ブール強制とも呼ばれます)を使用します。ECMA標準に従って、どの値がfalseに強制され、どの値がtrueに強制されるかの詳細は、ActionScript用に特別に文書化されています。

于 2009-02-22T11:51:13.200 に答える
3

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

var someObj:Object = getSomeObjectOrMaybeNull();
if(someObj == null) {
  trace("someObj is null!");
} else {
  trace("someObj is not null!");
}
于 2008-11-17T20:50:05.103 に答える
-2

親オブジェクトをループして、探しているオブジェクトのインスタンスが含まれているかどうかを確認することもできます。

foundit=false;
for (var i in this) {
    if (this[i]._name == "MyMovie") {
         foundit=true;
    }
}
于 2009-01-04T10:01:10.463 に答える