一、( = ) 赋值操作
二、( == ) 比较==两边的值是否相等,会自动进行类型转换
1、如果一个是null、一个是undefined,那么相等。
//a为null b为undifine
let a = null
let b
console.log(a==b);//true
2、如果一个是字符串,一个是数值,把字符串转换成数值再进行比较。
let a = '1'
let b = 1
console.log(a==b);//true
3、如果任一值是 true,把它转换成 1 再比较;如果任一值是 false,把它转换成 0 再比较。
let a = true
let b = 1
let c = 0
console.log(a==b);//true
console.log(a==c);//false
4、如果一个是对象,另一个是数值或字符串,把对象转换成基础类型的值再比较。
let obj = { value: 42 };
console.log(obj == "[object Object]"); // true,将对象转换为字符串 "[object Object]" 后比较
let obj2 = { value: 42 };
console.log(obj2 == 42); // false,对象无法直接转换为数字 42
在上述例子中,JavaScript 首先尝试将对象 { value: 42 } 转换为基础类型的值,然后再与另一个操作数进行比较。具体的转换规则如下:
- 对象会被转换为字符串,使用的是 toString() 方法或者 valueOf() 方法。
- 如果对象没有定义这两个方法,则会使用默认的 Object.prototype.toString() 方法,将其转换为形如 “[object Object]” 的字符串。
- 转换后的基础类型值再进行比较操作。
三、( === ) 比较===两边的值是否相等,先判断数据类型是否相同,不同直接为false,相同的话再比较值,如果值相同为true否则为false
1、如果被比较的两个值数据类型不相等则不等。
let a = 1
let b = '1'
console.log(a===b);//false
2、如果被比较的两个值都是数值,并且是同一个值,判定相等。
let a = 1
let b = 1
console.log(a===b);//true
3、如果被比较的两个值都是字符串,每个位置的字符都一样,那么相等;否则不相等。
let a = 'abcd'
let b = 'abcd'
let c = 'abc'
console.log(a===b);//true
console.log(a===c);//false
4、如果被比较的两个值都是布尔类型的true,或者都是false,那么相等。
let a = true
let b = false
let c = 1
console.log(a===b);//false
console.log(a===c);//false
5、如果被比较的两个值都引用同一个对象或函数,那么相等;否则不相等。
let a = {x:1,y:2}
let b = a
let c = "[object Object]"
console.log(a===b);//true
console.log(a===c);//false
6、如果两个值都是null,或者都是undefined,那么相等。
let a = null
let b
let c = null
console.log(a===b);//false
console.log(a===c);//true
参考链接:https://www.cnblogs.com/mycnblogs-guoguo/p/10101355.html