您的位置:首页 > Web前端 > JavaScript

javascript: 相等和不等运算符

2017-03-20 19:19 274 查看
“==”,“===”用于比较两个值是否相等,当然他们对相等的定义不尽相同。两个运算符允许任意类型的操作数,如果操作数相等则返回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,最后进行比较。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: