我有以下javascript代码:

        console.log("Line: 89");
        console.log(products[i]['barcodes'][j]);
        console.log(barcode);
        console.log(barcode == products[i]['barcodes'][j]);
        console.log(barcode == 888);
        console.log(products[i]['barcodes'][j] == 888);
        console.log(888 == 888);


我在控制台中看到以下输出

Line: 89
888
888
false
true
true
true


barcode == products[i]['barcodes'][j]怎么可能假为假?我应该如何比较这两个值?

最佳答案

考虑以下:

var a = '888';
var b = '888    ';
console.log(a); // 888
console.log(b); // 888
console.log(a == b); // false
console.log(a == 888); // true
console.log(b == 888); // true


比较ab时,它们都是字符串-无需任何类型转换即可直接进行比较。因此,b末尾的空白在这里很重要。

但是,将ab都与数字888进行比较时,在比较之前,存储在这些变量中的字符串会先转换为数字(忽略'888 '末尾的空格)。

关于javascript - 比较:x == a为真,x == b为真,但a == b为假,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22823911/

10-12 12:26