2012-06-13 6 views
0

Это Boolean сравнение всегда возвращает false, но оно сравнивает false == false в моей getColumnsFunction(). Он должен возвращать истину, и я не знаю, почему. Вот код:JavaScript boolean compare всегда терпит неудачу

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() для всех полей в том, что для цикла:

false "boolean_compare" false 

Они оба равны ложно, почему они чёрт делает это логический сравнение return false?

Edit: забыл «(» он должен быть inArray (Exlude, поля [х] .name) == ложный

+0

Не используйте 'for ... in' для перебора элементов массива. Вместо этого используйте регулярный цикл 'for'. –

+0

Где сравнивается ваше сравнение? – FabioCosta

+1

@FabioCosta: В строке 'console.log':' fields [x] .name == false' и 'fields [x] .name'. –

ответ

3

Это выражение:

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

будет первым сравнить имя false, и, поскольку они не равны, это будет вызывать inArray(exclude, false). Если это массив, содержащий значение false, он всегда будет возвращать false.

Я думаю, что вы хотите:

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

, который будет искать имя в массиве, а затем сравните результат false.

1

Я предполагаю, что имя поля не четко определено как логическое значение, поэтому в ExtJS по по умолчанию строка. вы сравниваете "false" с false.

+0

ya это, возможно, это тест, пожалуйста – shareef

0

вы можете отлаживать с поджигатель на FF или веб-инструментов на Chrome я хотел бы сделать это.
, но дают нам jsfiddle демо на нем jsfiddle

, но я думаю, что может быть console.log имеет какое-то отношение к этому, у меня такая же проблема, что и не использовать консоль .log использовать предупреждение проверить его.

Смежные вопросы