当前位置:  开发笔记 > 编程语言 > 正文

测试是否在ActionScript中定义了对象

如何解决《测试是否在ActionScript中定义了对象》经验,为你挑选了2个好方法。

在ActionScript中,如何测试对象是否已定义,即非空?



1> Matthew Crum..:

测试是否定义了一个对象

这适用于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);
}



2> bzlm..:

对于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进行了记录.


@TheWobbuffet为什么要停在那里?代码可以清理为只包含`trace(5)`.但是,除了你的建议,这将破坏代码的目的,这是为了尽可能清楚地说明布尔强制是如何工作的.:)
注意,`e = 0; 如果(e)trace(e);`
推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有