2016-07-01 9 views
8

誰でもこの行がlodashライブラリで使われている理由を説明することはできますか?戻り値のロダッシュの実装=== 0?値:0

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

なぜゼロを返さないのですか。

+1

指摘することはできますか? –

+0

https://github.com/lodash/lodash/blob/master/lodash.js#L11862 – pokemon

答えて

9

ゼロに厳密に等しいと考えられている2つの異なる値があります+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あなたはこの行は多分、GitHubのリンクか何かです
+0

しかし、 '!value'はいつ真となりますが、' value === 0'ではなくなりますか? – chepner

+1

@chepner: 'value'が' false'、 'null'などの場合 –

+0

@Oriol、ありがとう。 – pokemon