JS中 == 和 === 中容易糊涂的点

在JavaScript中,使用==进行比较时,会进行隐式类型转换。例如,字符串10会转换为数字10再与数字10比较,因此a==b返回true。但使用===进行严格相等比较时,不会转换类型,所以a===b返回false。这种行为是JavaScript语言的特性之一。
摘要由CSDN通过智能技术生成

所出现的问题

为什么在比较的时候,一个类型是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,严格相等比较,类型和值都相等
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值