JS隐性转换
JS的运算符中,=
,==
,===
这三个运算符对初学者而言,很容易混淆
-
=
是赋值运算符,用来给变量赋值 -
==
判断相等,返回值是布尔类型 -
===
严格相等,返回值是布尔类型
==
,===
这两个运算符。那么这两个运算符有什么区别呢?"1234"==1234;
//结果为true"1234"===1234;
//结果为false
字符串
"1234"
与数字1234
,在使用==
的情况下是相等的,但是在使用===
的情况下不相等==
和===
的区别在于两边参数的数据类型==
不要求两边的参数是同一数据类型,但是会强制转换成数值型,然后比较"值"是否相等
===
要求两边的参数是同一数据类型,如果不同,就不相等,如果相同,再比较"值"是否相等
==
强制转换数据类型的规则
类型 | 结果 |
---|---|
undefined | NaN |
null | 0 |
Boolean | true->1,false->0 |
String | "abc"->NaN,"123"->123 |
var a = 1;
if(a){
console.log("Hello");
}else{
console.log("666");
}//输出结果是"Hello"
if括号里的表达式,会被强制转换为布尔类型,规则如下:
类型 | 结果 |
---|---|
undefined | false |
null | false |
Number | +0,-0,NaN为false,其他为true |
String | 空字符串为false,其他为true |
Object | true |
-
undefined==null
,虽然undefined转换成数字为NaN,null转换成数字为0,但是它们是相等的 - 空白字符串
" "
,要与空字符串区别开,空白字符串转换成数字为0,转换成布尔类型为true,但是" "==false
,把==
两端都转换成数字就好理解了
==
会自动转换数据类型,但是写代码的时候要避免这种容易引起歧义的写法,判断相等尽量使用===
推荐阅读
- 热闹中的孤独
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 放屁有这三个特征的,请注意啦!这说明你的身体毒素太多
- 一个人的旅行,三亚
- 布丽吉特,人生绝对的赢家
- 慢慢的美丽
- 尽力
- 一个小故事,我的思考。
- 家乡的那条小河
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量