if (!x)和之间有什么区别if (x == null); 也就是说,什么时候他们的结果会有所不同?
Fel*_*ing 51
!x将返回true的每一个"falsy"值(空字符串0,null,false,undefined,NaN),而x == null将只返回true,如果x 是 null(编辑:或明显undefined(见下文)).
试试x = 0,有区别.
您可以说NOT运算符! 将值转换为其相反的布尔等效值.这与实际比较两个值不同.
此外,如果您比较值==,JavaScript会进行类型转换,这会导致意外行为(例如undefined == null).最好总是使用严格的比较===(值和类型必须相同),并且只有在你真正知道自己在做什么时才使用类型转换.
要阅读的内容:
更新:
有关非严格比较null和undefined(或一般比较)的更多信息,有必要查看规范.比较算法在那里定义(比较是x == y):
- 如果Type(x)与Type(y)相同,那么
(...)- 如果X是零和ÿ是不确定的,返回真.
- 如果X是不确定的和Ÿ为空,返回真.
- (......)
(......)
| 归档时间: |
|
| 查看次数: |
25456 次 |
| 最近记录: |