JavaScript 布尔比较总是失败

JavaScript boolean compare always fails

本文关键字:失败 比较 布尔 JavaScript      更新时间:2023-09-26

这个布尔比较总是返回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;
 }

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

false "boolean_compare" false 

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

编辑:忘记了一个'('它应该是在数组(exlude, fields[x].name ) == false

此表达式:

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

首先将名称与false进行比较,并且由于它们不相等,它将调用inArray(exclude, false)。除非它是一个包含值的数组false否则它将始终返回 false。

我认为你想要:

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

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

我猜字段名称没有明确定义为布尔值,因此默认情况下在extjs中是字符串。您正在将"false"false进行比较.

你可以在

FF上使用Firebug或在Chrome上使用Web工具进行调试,我会这样做。
但是给我们JSFIDDLE演示它JSFIDDLE

但我认为可能是控制台.log与它有关,我遇到了同样的问题,一个不使用控制台.log使用警报测试它.