2016-07-01 10 views
8

क्या कोई यह बता सकता है कि यह लाइन लॉन्श लाइब्रेरी में क्यों उपयोग की जाती है।रिटर्न मूल्य === 0 का आवास कार्यान्वयन? मूल्य: 0

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

और क्यों न केवल 0 लौटें;

+1

आप का कहना है सकते हैं जहां इस लाइन, एक GitHub लिंक या कुछ और है शायद? –

+0

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

उत्तर

9

दो अलग-अलग मान जो सख्ती से शून्य के बराबर माना जाता है के होते हैं: +0 और -0:

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

हालांकि, इन मूल्यों को पूरी तरह से समान रूप से व्यवहार नहीं है:

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

और स्पष्ट रूप से +Infinity !== -Infinity

तो कोड इस करता है:

  1. तो value "falsy" है (undefined, null, false, +0, -0, NaN, "")
    1. तो value+0 या -0 है, यह रिटर्न value
    2. अन्यथा, यह 0 देता है
+0

लेकिन जब 'मूल्य 'सत्य होगा, लेकिन' value === 0' नहीं होगा? – chepner

+1

@chepner: जब 'value'' false' है, 'null', आदि –

+0

@Oriol, धन्यवाद। – pokemon

संबंधित मुद्दे