lodash实现返回值=== 0?值:0

时间:2016-07-01 20:52:24

标签: javascript lodash

任何人都可以解释为什么这行在lodash库中使用。

if (!value) {
    return value === 0 ? value : 0;
}

为什么不返回0;

1 个答案:

答案 0 :(得分:9)

有两个不同的值被认为严格等于零:+0-0

+0 === +0;
+0 === -0;
-0 === +0;
-0 === -0;

然而,这些价值观并不完全相同:

1 / +0 === +Infinity
1 / -0 === -Infinity

且明确+Infinity !== -Infinity

然后代码执行此操作:

  1. 如果value是" falsy" (undefinednullfalse+0-0NaN""
    1. 如果value+0-0,则会返回value
    2. 否则,它会返回+0