在ES6 或 Javascript 中,== 与 === 是有明显区别的。
先看如下测试:
"1" == 1 // true
"1" === 1 // false
Number(1) == true // true
Number(1) === true // false
null == undefined // true
null === undefined // false
以上情况可以看出,== 在类型不同时比较值为 true,而 === 比较值为 false;
因此:
- ===:称为等同符,当两边值的类型相同时,直接比较值,若类型不相同,直接返回false;
- ==:称为等值符,当等号两边的类型相同时,直接比较值是否相等,若不相同,则先转化为类型相同的值,再进行比较;
类型转换规则:
- 如果等号两边是boolean、string、number 三者中任意两者进行比较时,优先转换为数字进行比较。
- 如果等号两边出现了 nul l或 undefined, null 和 undefined 除了和自己相等,就彼此相等
注意:NaN == NaN //返回 false,NaN 和所有值包括自己都不相等。
NaN == NaN // false
![](https://img.haomeiwen.com/i4208927/671571c99cc62a5e.png)
this.setState({title: this.areaData == null ? '新增区域' : '编辑区域'});
/* 换成如下写法更好:
因为它会判断各种类型
当 this.areaData 等于 {}, [], "", 0, null, undefined, NaN 时,无均返回 false, 所以可以利用此特性来判断这些类型。*/
this.setState({title: this.areaData ? '新增区域' : '编辑区域'});
网友评论