无法确定else if语句为什么进入计算结果为false的条件

时间:2016-06-22 13:41:55

标签: javascript

考虑以下对象o,以及一个应该打印到控制台属性的函数findEmpty,该值是一个空数组。

var o={
    "StudentInfo": [{
        "Name1": [{
            "100": {
                "a": "12"
            }
        }, {
            "101": {
                "a": "50"
            }
        }]
    }, {
        "Name2": [{
            "102": {}
        }, {
            "103": {
                "b": "50"
            }
        }]
    }]
}

function findEmpty(obj)
{
    for (var p in obj)
    {
        debugger;
        var propValue = obj[p];
        var condition = propValue && typeof propValue === 'object' && !Array.isArray(propValue);
        if (Array.isArray(propValue) && propValue.length == 0) {
            console.log('Property ' + p + ' has an empty array.');
        }
        else if (condition) {
            findEmpty(propValue);
        }
    }
}

在调试中,else if要检查的条件呈现为false,但它会一直输入它。我错过了什么?

enter image description here

更新:在调试期间,在同一个布尔变量的控制台中运行if / else将执行错误评估的代码。

enter image description here

1 个答案:

答案 0 :(得分:-5)

propValue如何同时成为一个对象和一个数组?

不应该是:

var condition = propValue && typeof propValue === 'array' && !Array.isArray(propValue);