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。