JavaScript布尔比较总是失败

时间:2012-06-13 14:23:47

标签: javascript extjs4 boolean

此布尔比较始终返回false,但它在我的getColumnsFunction()中比较false == false。它应该返回true,我不知道为什么。这是代码:

function getModelColumns(exlude, modelName){    
    var model = Ext.ModelManager.getModel(modelName).create();
    var fields = model.fields.items;

    for(var x in fields){
        console.log( inArray(exlude, fields[x].name == false),
                    'boolean_compare', 
                     inArray(exlude, fields[x].name));
     }

}
function inArray(arr,val){
    for(var x in arr){
        if(arr[x] === val)
            return true;
    }

    return false;
 }

以下是for循环中所有字段的console.log():

false "boolean_compare" false 

它们都等于false,为什么它们会导致布尔比较返回false?

编辑:忘了'''它应该是inArray(exlude,fields [x] .name)== false

3 个答案:

答案 0 :(得分:3)

这个表达式:

inArray(exlude, fields[x].name == false)

首先将名称与false进行比较,因为它们不相等,所以会调用inArray(exclude, false)。除非它是包含值false的数组,否则它将始终返回false。

我认为你想要:

inArray(exlude, fields[x].name) == false

将搜索数组中的名称,然后将结果与false进行比较。

答案 1 :(得分:1)

我猜测字段名称没有明确定义为boolean,因此在extjs中默认为string。您正在将"false"false进行比较。

答案 2 :(得分:0)

您可以在Chrome上使用firebug进行调试,也可以在Chrome上使用网络工具进行调试。
但请给我们jsfiddle演示jsfiddle

但我认为可能是console.log与它有关,我遇到同样的问题,不要使用console.log使用警报测试它。