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,最后进行比较。
“===”称为严格相等运算符(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,最后进行比较。
相关文章推荐
- javascript: 相等和不等运算符
- Javascript 中的相等与不等
- Javascript 中的相等与不等
- Javascript中的相等与不等运算
- javaScript相等运算符==
- Javascript 中的相等与不等
- javascript相等运算符与等同运算符(转自www.jqueryba.com)
- javascript相等运算符与等同运算符详细介绍
- javascript 相等运算符(==)和等同运算符(===)
- javascript相等运算符与等同运算符详细介绍
- JavaScript -- 相等运算符
- 1.Javascript运算符(1):逻辑非!;相等运算符==(Ⅰ)
- Javascript 中的相等与不等
- 字符串的运算符重载(如:赋值‘=’、加'+'、加等'+='、下标'[]'相等'=='、不等'!='、大于'>'、输出运算符'<<'以及类型转换)
- javascript基础(赋值运算符,关系运算符,相等运算符,三元运算符,运算符的优先级,代码块)(十)
- javascript运算符之相等与严格相等
- javascript相等运算符与等同运算符(转自www.jqueryba.com)
- javascript相等运算符与等同运算符
- javascript 中的==(相等运算符)与===(等同运算符)比较
- javascript中的相等运算符(==)和等同运算符(===)