考虑以下:
var comp = 2+3;
console.log(comp == "5"); // true
console.log(comp === "5"); // false
console.log(comp == "2+3"); // false
为什么第三个比较不正确?JS只有在单个数字的情况下才能将字符串转换为整数?第三次比较会发生什么?它是否无法将“2 + 3”转换为数字,所以它只是假设它不同?
考虑以下:
var comp = 2+3;
console.log(comp == "5"); // true
console.log(comp === "5"); // false
console.log(comp == "2+3"); // false
为什么第三个比较不正确?JS只有在单个数字的情况下才能将字符串转换为整数?第三次比较会发生什么?它是否无法将“2 + 3”转换为数字,所以它只是假设它不同?
comp
,5
在JS中是数字类型,"5"
是字符串。字符串和数字不相同,因此console.log(comp === "5")
会返回false
.
当你使用==
而不是===
它返回时true
,因为一个叫做“类型强制”的概念。这只是意味着 JS 假定您正在尝试比较两个相同的类型(在本例中为数字),因为它们似乎相同,并返回true
. 所以它将字符串转换为一个数字来帮助你。
在第三种情况下,字符串中除了数字之外还有其他类型的字符,并且没有一个与数字相似5
,所以类型强制不适用,所以它返回false
。
在此处阅读有关类型强制的更多信息。
因为"2+3"
用引号表示 javascript 这是一个字符串,它不能被强制转换为一个数字。
和5
不一样的样子"2+3"
。
只需测试它:console.log(typeof '2+3')
和console.log(typeof 2 + 3)