2016-10-14 10 views
6

करता है निम्नलिखित:इसका क्या अर्थ है ?: x || एक्स === {}

x || x === {} 

!!x इसका मतलब यह नहीं, कि है, x परिभाषित किया गया है?

+0

इस एक सा .... http मदद कर सकता है हो सकता है: //stackoverflow.com/questions/3563153/what-does-var-xx – BobSki

+1

के बाद से '{}' डॉन truthy है, मैं उपरोक्त कोड का बिंदु नहीं देखें ... –

+0

यह एक डुप्लिक नहीं है ई, तुलना के कारण। –

उत्तर

7

तुलना कोई मतलब नहीं है यही कारण है, क्योंकि या तो x truthy है, तो आप परिणाम x की हो, या falsy, आप false मिल (एक falsy मूल्य एक खाली वस्तु उदाहरण के लिए सख्त बराबर कभी नहीं है)।

एक संक्षिप्त संस्करण

x || false 

मुझे x या false देने के लिए किया जाएगा।

+0

आपको दाईं तरफ झूठा मिलेगा क्योंकि एक्स को {} के संदर्भ के रूप में तुलना की जाती है। @ टोमाज़ लेवोवस्की ने नीचे भी निर्दिष्ट किया है। –

+2

@RazvanDumitru यही कारण है कि उसने 'झूठी' –

+2

लिखा है, लेकिन शुरुआत के लिए यह किसी भी तरह से अंतिम परिणाम पर सीधे जाने के लिए संदिग्ध है। –

2

|| एलएचएस एक वास्तविक मूल्य है तो बाएं हाथ की तरफ लौटाता है। तो यदि x एक वास्तविक मूल्य है, तो यह x देता है।

अन्यथा, यह x की तुलना किसी नए ऑब्जेक्ट से करता है, जो हमेशा false होगा, और उसे वापस कर देगा।

तो यदि x सत्य है, तो आपको (एक अनमोडिफाइड) x मिलता है अन्यथा आपको एक स्पष्ट बूलियन false मिलता है।

यह !!x से अलग है क्योंकि xx एक वास्तविक मूल्य था, तो यह एक बूलियन true लौटाएगा।

5

x || x === {} का मूल रूप से x || false है।

!!x का अर्थ है "x truthy है", तो यह बिल्कुल वैसा ही नहीं है - x || x === {}x वापस आ जाएगी अगर x truthy है। इसी मामले में, !!xtrue लौटाएगा।

|| ऑपरेटर का अर्थ है "अगर बाईं ओर truthy है (, नहीं nullundefined नहीं, 0 आदि नहीं - विवरण के लिए All falsey values in JavaScript देखें) बाईं ओर लौटने, और दाईं ओर लौटने"।

दाईं ओर पर आप x === {} है जो हमेशा false को मूल्यांकन करता है, सख्त तुलना के बाद से तुलना करने का मतलब संदर्भ के लिहाज से

!!x और x || x === {} (यानी, "x जो सच नहीं है {} रूप में एक ही वस्तु है, है) होगा एक ही केवल तभी x === true या x === false

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