此布尔比较始终返回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
答案 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使用警报测试它。