【发布时间】:2012-06-13 14:23:46
【问题描述】:
这个布尔比较总是返回 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
【问题讨论】:
-
不要使用
for … in来遍历数组元素。请改用常规的for循环。 -
代码中的实际比较在哪里?
-
@FabioCosta:在
console.log行中:fields[x].name == false和fields[x].name。 -
值
fields[x].name真的是布尔值吗? -
您应该阅读 JavaScript 中 array 和 object 之间非常显着的区别。数组是一种特殊类型的对象,但并非所有对象都是数组。
标签: javascript extjs4 boolean