JavaScript的相等运算符( == 和 === )

  • 使用==时,意味着不同类型的值可以被看作相等
类型(x)类型(y)结果
nullundefinedtrue
undefinednulltrue
数值字符串x == toNumber(y)
字符串数值toNumber(x) == y
布尔值任何类型toNumber(x) == y
任何类型布尔值x == toNumber(y)
字符串或数值对象x == toPrimitive(y)
对象字符串或数值toPrimitive(x) == y

toNumber() 和 toPrimitive() 是内部的。

值类型结果
undefinedNaN
null+0
布尔值true返回1;false返回+0
数值数对应的值
对象1. 如果对象的valueOf方法的结果是原始值,返回原始值;2. 如果对象的toString方法返回原始值,就返回这个值;3. 其他情况返回错误

举例:

console.log('aaa' == true); // false

解释:

  1. ‘aaa’ 是字符串,使用toString转成了NaN;
  2. true 是布尔值,使用toString转成了1;
  3. 这样结果就变成 NaN == 1,结果为false。

console.log('123' == 123); // true

解释:

  1. ‘123’ 是字符串,使用toString转成了123;
  2. 123 还是返回123;
  3. 结果就是 123 == 123,结果为true。

  • 使用===时,如果值的类型不同,则结果返回的是false

例如:

console.log('123' === 123); // false

如果值得类型相同:

类型(x)结果
数值x和y的值相同(不是NaN)true
字符串x和y是相同的字符true
布尔值x和y都是true或falsetrue
对象x和y引用同一个对象true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值