1、 = = * 和 = = =的区别
= = 和 = = = 都是比较运算符的一种 ,执行结果都是布尔值
两者区别
1、在number、string、boolean等基础类型间的比较时,分为同类型和不同类型间的比较
- 同类型
= = 和 = = = 比较: 直接进行符号两边的 ‘值’ 比较,看符号两边的值是否相同
// 值相同,类型无所谓
console.log(1 == 1) =>ture
console.log(1 == 2) => false
// 数据类型相同 + 值相同
console.log('1' === '1') =>ture
console.log('1' === '2') => false
- 不同类型
= = 比较: 是转化为同一数据类型后,值进行比较
= = = 比较: 在进行比较时,必须数据类型相同 且 符号两边大的值也相同才可得到 ture (不会进行数据类型转换)
console.log(1 == '1') =>ture
console.log(1 === '1') =>false
2、复杂数据类型
在复杂数据类型,arr、obj中,两者没有区别,因为在复杂数据类型中,进行的都为指针地址的比较
在编程中,为使逻辑更加严谨,通常使用 ===
2、 NaN 是什么 NaN == NaN ?
NaN 是一个数字类型,但不是个数字,也就是说它无法具体表示出来, 因此, NaN = = NaN 和 NaN = = = NaN 结果都为 false
console.log(NaN == NaN) =>false
console.log(NaN === NaN) =>false
/*
例如 将字母A 和 字母B 转换成数字类型之后,返回值都为 NaN
但是两者当中的值依旧是不同的,只是数据类型相同而已
*/
console.log(Number('A')) =>NaN
console.log(Number('B')) =>NaN
//在 == 比较时,不管数据类型,只看两端值是否相同
console.log(Number('A') == Number('B')) =>false
// 在 === 比较时,不仅要两端数据类型相同,也要两端值相同
console.log(Number('A') === Number('B')) =>false