所出现的问题
为什么在比较的时候,一个类型是string的 一个类型是number的,
它们在==的时候 比较的值为true?
案例
let a = "10"
let b = 10
console.log(typeof a) // string
console.log(typeof 10) // number
console.log(a == b)
// 为啥是true? 一个是string 一个是number
当你使用a ==
b进行比较时,JavaScript会将字符串a转换为一个数字,然后再与数字b进行比较。由于字符串"10"可以转换为数字10,所以比较结果为true。
这种隐式类型转换的行为是JavaScript的特性之一。如果你想进行严格的类型和值比较,可以使用===
(严格相等)运算符。===
运算符不会进行类型转换,只有在类型和值都相等的情况下才会返回true。
let a = "10";
let b = 10;
console.log(typeof a); // 输出: "string"
console.log(typeof 10); // 输出: "number"
console.log(a === b); // 输出: false
到底是什么类型转化成了什么类型?
可以了解了解:
console.log("10" == 10); // 输出: true,字符串转换为数字
console.log(10 == "10"); // 输出: true,数字转换为字符串
console.log("10" == "10"); // 输出: true,两个字符串相等
console.log("10" == 10.0); // 输出: true,字符串转换为浮点数
console.log("10" === 10); // 输出: false,严格相等比较,类型不同
console.log("10" === "10"); // 输出: true,严格相等比较,类型和值都相等