每次我将数组传递给此函数时,当它遇到null或未定义的值时,它会停止循环。我无法解决如何解决这个问题。当我询问循环中的当前项是否为null或未定义或为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;
}
}
}
这里发生了什么?
答案 0 :(得分:3)
实际上循环在这里停止(如果你返回退出循环的东西!):
if (typeOf(arr[i + 1]) == "array") {
xul("append", loc, arr[i+1]);
} else {
return loc;
}
如果下一个元素不是数组,则返回loc并且循环停止。检查这个小提琴:http://jsfiddle.net/g8SVJ/它记录两个未定义,然后返回loc
您还应该使用===
代替==