JavaScript 布尔比较总是失败
JavaScript boolean compare always fails
这个布尔比较总是返回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使用警报测试它.
相关文章:
- 将两个隐藏输入与简单的 JavaScript 进行比较失败
- 在什么情况下,应该.deep.equal失败,但使用JSON.stringify进行比较工作正常
- switch语句中的数字比较失败
- 为什么这个字符串比较在Jest的期望中没有失败
- 在 ie8 中使用茉莉花比较数组失败
- JavaScript 布尔比较总是失败
- 字符串比较 JavaScript 中的失败
- 十进制比较在 JavaScript 中失败
- 阵列比较失败
- 比较数组中的值失败
- javascript xml节点相等比较在XSLT内的函数中失败
- Javascript数字比较失败
- 单元测试equals()在比较两个数组时失败
- 为什么ava在比较对象列表和对象文本列表时失败
- 由于将比较方法添加到数组原型而导致测试失败.如何更新代码或测试?
- 当空值传递给其中一个参数时,比较函数失败
- 深度比较(Eloquent Javascript第4章):代码在测试用例中失败
- JavaScript 比较两个具有相同值的字符串失败
- php/jquery 比较内容失败,无法正常工作
- 字符串比较失败