在ActionScript中,如何测试对象是否已定义,即非空?
测试是否定义了一个对象
这适用于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); }
对于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)
是最易读的版本.
此方法使用隐式转换为布尔值(也称为布尔强制),以及将强制转换为false的值的详细信息以及将强制转换为真实值的详细信息遵循ECMA标准,并且还专门针对ActionScript进行了记录.