null值跳起循环

时间:2011-07-10 18:01:16

标签: javascript arrays null for-loop undefined

每次我将数组传递给此函数时,当它遇到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;
    }   
}
}

这里发生了什么?

1 个答案:

答案 0 :(得分:3)

实际上循环在这里停止(如果你返回退出循环的东西!):

if (typeOf(arr[i + 1]) == "array") {
    xul("append", loc, arr[i+1]);
} else {
    return loc;
}  

如果下一个元素不是数组,则返回loc并且循环停止。检查这个小提琴:http://jsfiddle.net/g8SVJ/它记录两个未定义,然后返回loc

您还应该使用===代替==