【发布时间】:2011-07-10 18:01:16
【问题描述】:
每次我将一个数组传递给这个函数时,当它遇到一个空值或未定义的值时,它就会停止循环。我不知道如何解决这个问题。当我询问循环中的当前项是 null 还是 undefined 还是 false 时,它没有回答...
function xul(func, loc, arr){
var elem;
var props = {};
for (var i = 0, len = arr.length; i < len; i++){
if (arr[i] == undefined) {
jsdump("undefined" + " - " + len);
}
else if (arr[i] == null) {
jsdump("null" + " - " + len);
}
else if (arr[i] == false) {
jsdump("false" + " - " + len);
}
else if (typeof arr[i] == "string"){
elem = arr[i];
if (typeOf(arr[i + 1]) == "object") {
props = arr[i+1];
i++;
}
loc = createNode(func, loc, elem, props);
}
if (typeOf(arr[i + 1]) == "array") {
xul("append", loc, arr[i+1]);
} else {
return loc;
}
}
}
这是怎么回事?
【问题讨论】:
-
你确定数组本身不为空吗?
-
typeof永远无法返回array -
在最后一个 'if' 中,如果它是 undefined 或 null 它进入 else 并且 'return' 停止循环
-
@SLaks:啊,但他用的是
typeOf,而不是typeof。 ;) -
非常正确的 typeOf 是我在旅行中发现的一个小功能......它只是一个普通的 typeof,但是它会检查它是否返回对象,你是否可以读取它的长度......如果你能数组!
标签: javascript arrays null for-loop undefined