js中falsy值的相等性

falsy值并不完全彼此相等

js中falsy值: '', 0, -0, NaN, false, null, undefined.

所有这些值取反(通过!运算符)都是true. 因此一直以为使用 '==' 判断时它们会彼此相等,今天才发现不是这样.使用 '==' 判断时:

1. NaN和任何值都不等,包括它本身,NaN == NaN(false).

2. 除NaN外,其它值都与自身相等,如null==null(true), 0与0(true)

3.除自身外,null和undefined只与彼此相等;

4.除自身外,-0,0,'',false 彼此相等;

因此,在程序中,如果我们需要针对所有的falsy值,应判断!value == true;若只针对null和undefined,则使用 value == null; 若只针对某个特定falsy值,则要用全等'==='来判断,如value === 0。

原文地址:https://www.cnblogs.com/linfengtingyu1/p/3544186.html