在下面的代码中,a.b的值是多少? (它既不是未定义的,也不是空的,也不是空字符串)
var a = {} ;
a.b = [] ;
//////////////////////a.b["hello"]="hello"; //comment, uncomment for testing it
trace( a.b ) // output is invisible, something like blank string
trace( (a.b).length ); // 0 , this could be used but the index is string ie. "hello"
trace(a.b == undefined ) ; // false
trace(a.b == null) ; // false
PSEUDOCODE:
if ( a.b is not having any type of content inside )
{
//How to get inside this part, when a.b is not having any value
// do this
}
else
{
//do this
}
答案 0 :(得分:1)
是数组。
a.b = [] ;
a.b = new Array(); //is similar
你可以这样写:
a.b["hello"] = 1;
因为Array是动态类。您只需创建字段 hello 。
答案 1 :(得分:1)
如前所述,您刚刚在一个Object中创建了一个Array。数组应该用于存储索引基值而不是String 1 即:
var a:Array=[]; a[0]=XXX, a[1]=YYYY;
如果要存储String键,则应使用Object:
var a:Object={}; a["foo"]=XXX, a["hello"]=YYYY;
当您使用Array时,length属性将仅反映您放入的所有索引基值,如果您添加了String基本属性,则不会将其考虑在内。 您可以做的是枚举数组的键,如果至少有一个则中断:
var isEmpty:Boolean=true;
for (var s:String in a.b) { // enumerate keys that are into a.b
isEmpty=false;
break; // there is at least one key so exit the loop
}
if (isEmpty) {
//How to get inside this part, when a.b is not having any value
// do this
} else {
//do this
}
答案 2 :(得分:0)
你可以这样做:
if(a.b == null || a.b == undefined || (a.b).length == 0)
我并不完全明白你想要做什么,但是如果a.b是空的,那会不会让你知道?