任何人都可以解释为什么这行在lodash库中使用。
if (!value) {
return value === 0 ? value : 0;
}
为什么不返回0;
答案 0 :(得分:9)
有两个不同的值被认为严格等于零:+0
和-0
:
+0 === +0;
+0 === -0;
-0 === +0;
-0 === -0;
然而,这些价值观并不完全相同:
1 / +0 === +Infinity
1 / -0 === -Infinity
且明确+Infinity !== -Infinity
。
然后代码执行此操作:
value
是" falsy" (undefined
,null
,false
,+0
,-0
,NaN
,""
)
value
为+0
或-0
,则会返回value
+0