0

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

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

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

4

3 回答 3

3

这个表达式:

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

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

我认为你想要:

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

它将在数组中搜索名称,然后将结果与false.

于 2012-06-13T14:30:39.433 回答
1

我猜字段名称没有明确定义为布尔值,所以在 extjs 中默认是字符串。您正在"false"false.

于 2012-06-13T14:30:20.583 回答
0

您可以使用 FF 上的 firebug 或 Chrome 上的网络工具进行调试,我会这样做。
但是给我们 jsfiddle 演示 jsfiddle

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

于 2012-06-13T14:30:34.507 回答