нулевое значение отключает цикл - PullRequest
1 голос
/ 10 июля 2011

Каждый раз, когда я передаю массив этой функции, когда он достигает нулевого или неопределенного значения, он останавливает цикл. Я не могу понять, как это исправить. Когда я спрашиваю, является ли текущий элемент в цикле нулевым, неопределенным или ложным, он не отвечает ...

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 Ответ

3 голосов
/ 10 июля 2011

На самом деле цикл останавливается здесь (если вы возвращаете что-то, вы выходите из цикла!):

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

, если следующий элемент не является массивом, он возвращает loc и цикл останавливается.проверьте эту скрипту: http://jsfiddle.net/g8SVJ/ она регистрирует два неопределенных и затем возвращает loc

Вы должны также использовать === вместо ==

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...