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 

それらは両方ともfalseに等しいのですが、なぜそのブール値の比較が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のWebツールでデバッグできます。
ただし、jsfiddle のデモを jsfiddle で提供して ください

しかし、console.log に何か関係があるのではないかと思います。console.log を使用しないでください。アラートをテストしてください。

于 2012-06-13T14:30:34.507 に答える