在一些网站上看过这样的说法:
var obj:Object;
if (obj)
{
//false
}
obj = {};
if (obj)
{
//true
}
首先我想说的是,if语句接受的是一个Boolean类型的参数,如果这个参数不是Boolean类型,那则会把这个参数转换为Boolean类型。
上面的做法其实是把一个obj转换为了Boolean值,以下是一份转换为Boolean值后的对照表:
输入值 | 示例 | 返回值 |
---|---|---|
0 | Boolean(0) | false |
NaN | Boolean(NaN) | false |
数字(非 0 或 NaN ) | Boolean(4) | true |
空字符串 | Boolean("") | false |
非空字符串 | Boolean("6") | true |
null | Boolean(null) | false |
undefined | Boolean(undefined) | false |
Object 类的实例 | Boolean(new Object()) | true |
无参数 | Boolean() | false |
所以,上面这样的写法事实上也没有错,只不过偷了点懒,把一些该自己做的事情由程序自己完成了,当然,提前是你对这个机制了解了。
以下代码也是正确的:
var intVar:int = 0;
if (intVar) //false
intVar = 1;//intVar = -1;
if (intVar) //true
判断一个字符串是否为空:
var str:String;// var str:String = "";
if (str) //false