JS中=、==、===的区别

一、( = ) 赋值操作

二、( == ) 比较==两边的值是否相等,会自动进行类型转换

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值