javascript: 相等和不等运算符

“==”,“===”用于比较两个值是否相等,当然他们对相等的定义不尽相同。两个运算符允许任意类型的操作数,如果操作数相等则返回true,否则返回false。

“===”称为严格相等运算符(strict equality),也称作恒等运算符,用来检测两个操作数是否严格相等。“==”运算符称为相等运算符,他用来检测两个操作数是否相等,这里相等的定义非常宽松,可以允许进行类型转换。

“!=”和“!==”的运算符检测规则是“==”,“===”的求反。

1.“===”严格相等运算符注意点:

如果类型不相同,返回false(这是必须的);

两个值都是null或者undefined,则他们不相等;

两个值都是布尔值true或false,则他们相等;

如果其中一个是NaN,或者两个值都是NaN,则他们不相等。NaN和其他任何值都是不相等的,包括他本身!通过x!==x来判断x是否为NaN,只有在x为NaN的时候,这个表达式的值才为true;(这个需要注意);

2.“==”相等运算符注意点:

如果两个操作数类型不同,“==”相等操作符可能会认为他们两个相等。检测相等将会遵循如下规则进行类型转换

——如果一个值是null,另一个是undefined,相等;

——如果一个值是数字,另一个是字符串,先将字符串转换为数字,然后使用转换后的值进行比较。

——如果其中一个值是true,则将其转换为1再进行比较,如果其中一个是false,则将其转为0再进行比较。

——如果一个值是对象,另一个值是数字或字符串,则先将对象转换为原始值,然后再进行比较。对象通过toString()方法或者valueOf()方法转换为原始值,然后再进行比较。javascript语言核心的内置类首先尝试使用valueOf(),再尝试使用toString(),除了日期类,日期类只使用toString()转换。那些不是javascript语言核心中的对象则通过各自的实现中定义的方法转换为原始值。(重点)

——其他不同类型之间的比较均不相等。

小例子:“1”==true;

这个表达式返回的值为true,布尔值true首先转换为数字1,然后字符串“1”转换为数字1,最后进行比较。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值