2016-07-01 17 views
8

Qualcuno può spiegare perché questa linea è usata nella biblioteca di lodash.implementazione di lodash del valore restituito === 0? valore: 0

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

e perché non basta restituire 0;

+1

Può indicare dove questa linea è, forse un link GitHub o qualcosa del genere? –

+0

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

risposta

9

Esistono due diversi valori che sono considerati rigorosamente uguale a zero: +0 e -0:

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

Tuttavia, questi valori non si comportano completamente identico:

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

e chiaramente +Infinity !== -Infinity.

Quindi il codice fa questo:

  1. Se value è "falsy" (undefined, null, false, +0, -0, NaN, "")
    1. Se value è +0 o -0, esso restituisce value
    2. In caso contrario, restituisce +0
+0

Ma quando '! Valore' sarà vero ma non' valore === 0'? – chepner

+1

@chepner: Quando 'valore' è' false', 'null', ecc. –

+0

@Oriol, grazie. – pokemon

Problemi correlati