我有以下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
比较
a
和b
时,它们都是字符串-无需任何类型转换即可直接进行比较。因此,b
末尾的空白在这里很重要。但是,将
a
和b
都与数字888进行比较时,在比较之前,存储在这些变量中的字符串会先转换为数字(忽略'888 '
末尾的空格)。关于javascript - 比较:x == a为真,x == b为真,但a == b为假,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22823911/