-1

在下面的代码中 ab 的值是多少?(它既不是未定义的,也不是空的,也不是空字符串)

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 

伪代码:

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 
 }
4

3 回答 3

1

它是数组。

a.b = [] ; 
a.b = new Array(); //is similar

你可以这样写:

a.b["hello"] = 1;

因为 Array 是动态类。您只需创建字段hello

于 2012-08-09T11:15:29.167 回答
1

如前所述,您刚刚在对象中创建了一个数组。数组应该用于存储索引基值而不是字符串之一,即:

var a:Array=[]; a[0]=XXX, a[1]=YYYY;

如果要存储字符串键,则应使用对象:

var a:Object={}; a["foo"]=XXX, a["hello"]=YYYY;

当您使用 Array 时,length 属性将仅反映您放入其中的所有索引基值,如果您添加了 String 基属性,它将不会被考虑在内。您可以做的是枚举 Array 的键并在至少有一个时中断:

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 
}
于 2012-08-09T11:47:27.783 回答
0

你可以这样做: if(a.b == null || a.b == undefined || (a.b).length == 0)

我不完全理解您要做什么,但是如果 ab 为空,那不会让您知道吗?

于 2012-08-09T11:42:14.513 回答