2017-03-16 10 views
15

के बजाय झूठे MDN वेबसाइट से यदि आप typeof operand
डेफ को देखो: संकार्य एक अभिव्यक्ति वस्तु या आदिम
हम जानते हैं कि 1===1 // returns true यह एक आदिम प्रकार boolean है का प्रतिनिधित्व करता है और
typeof true // always returns booleanक्यों typeof 1 === 1 रिटर्न बूलियन

लेकिन जब मैं कोड

console.log(typeof 1===1);
नीचे चलाने

मुझे समझ नहीं आता क्यों यह false रिटर्न boolean

+0

आप '1' को' type' की स्ट्रिंग तुलना कर रहे हैं। यह बराबर नहीं होगा, क्योंकि '1' एक 'संख्या' है। –

+2

टाइपफ़ोफ़ की तुलना – abhishekkannojia

+0

से अधिक प्राथमिकता है क्योंकि '===' मान की सख्त तुलना है। 'टाइपऑफ 1' "संख्या" है, इसलिए आप स्ट्रिंग मान "संख्या" की तुलनात्मक संख्या 1 –

उत्तर

16

typeof ऑपरेटर === की तुलना में अधिक पूर्वता, इसलिए अभिव्यक्ति typeof 1===1 रूप (typeof 1)===1 व्याख्या की है है:

  • typeof ऑपरेटर एक स्ट्रिंग रिटर्न; (typeof 1) स्ट्रिंग 'number' पर मूल्यांकन करता है।

  • 'number'===1 स्पष्ट कारणों से false का मूल्यांकन करता है।

MDN atricle on operator precedence in Javascript देखें।


एक और उदाहरण के रूप में, सादृश्य द्वारा, typeof 1+1 परिणाम स्ट्रिंग 'number1' में।

+0

इंगित करने के लिए धन्यवाद .... – nivas

38

के बजाय बाद से typeof ऑपरेटर तो === एक उच्च पूर्वता साथ आता है:

  • पहला ऑपरेशन वास्तव में typeof 1 जो एक रिटर्न है "number"
  • अगला ऑपरेशन "number" === 1 है, जो झूठी वापसी करता है, क्योंकि स्पष्ट रूप सेstringnumber नहीं है।

आप यह काम बनाना चाहते हैं, उपयोग के अंदर कोष्ठकों तुलना (1 === 1)पहले और तो अपने प्रकार की जाँच कार्रवाई करने के लिए।

console.log(typeof (1 === 1));

अधिक जानकारी: MDN Operator precedence

+3

द्वारा इंगित किया गया है, सिर्फ स्पष्टीकरण के लिए, "जावास्क्रिप्ट बाएं से दाएं कोड पढ़ता है" थोड़ा भ्रामक है। इसे ऑपरेटर प्राथमिकता के साथ करना है, क्योंकि अन्य उत्तरों बताते हैं। जाहिर है, '4 + 5 * 6'' 34' रिटर्न के रूप में आता है और '54' नहीं। –

+7

नहीं, ['टाइपोफ़'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof) एक ऑपरेटर है, जैसे' + 'या' * '। ऐसा होता है कि 'टाइपोफ़' की प्राथमिकता '===' की तुलना में अधिक है, इसलिए इसे पहले निष्पादित किया जाता है। '1 === टाइप 1 1 एक ही व्यवहार प्रदर्शित करेगा। आप स्वयं को मनाने के लिए एमडीएन पर [ऑपरेटर प्राथमिकता पृष्ठ] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence) देख सकते हैं। –

6

अभिव्यक्ति का मूल्यांकन (typeof 1)===1 के रूप में किया गया है, ऑपरेटर प्राथमिकता के कारण। और यह true नहीं है।

4

कोशिश का उपयोग करने के

console.log(typeof (1 === 1)); 
संबंधित मुद्दे