2013-04-05 4 views
29

typeof myVariable की तुलना में typeof (myVariable) के बीच कोई अंतर है?"टाइपऑफ" को ब्रांड्स की आवश्यकता क्यों नहीं है?

दोनों काम, लेकिन PHP से आ रहे हैं, मुझे नहीं पता कि यह फ़ंक्शन कंस्ट्रैसिस का उपयोग क्यों कर सकता है या नहीं।

+1

यह कोई फ़ंक्शन नहीं है। –

+1

जोड़ने के लिए, यह '+' या '-' https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/typeof –

+0

जैसा ऑपरेटर है क्योंकि 'टाइपोफ़' एक ऑपरेटर है, नहीं एक समारोह। – jmoerdyk

उत्तर

44

typeof कीवर्ड ऑपरेटरJavascript प्रोग्रामिंग में दर्शाता है।

specification में typeof ऑपरेटर के लिए सही परिभाषा है:

typeof[(]expression[)] ; 

यह typeof(expression) या typeof expression रूप typeof के उपयोग के पीछे कारण है।

पर आ रहा है क्यों इसे लागू किया गया है क्योंकि डेवलपर को अपने कोड में दृश्यता के स्तर को संभालने की संभावना है।

if (typeof myVar === 'undefined') 
    // ... 
; 

या एक अधिक जटिल अभिव्यक्ति पठनीयता के कारण () का उपयोग कर कहा::

var isTrue = (typeof (myVar = anotherVar) !== 'undefined') && (myVar === true)); 

संपादित करें:

इस प्रकार, यह typeof का उपयोग कर एक साफ सशर्त बयान उपयोग करना संभव है

कुछ मामलों में, typeof ऑपरेटर के साथ ब्रांड्स का उपयोग करके कोड अस्पष्टता के लिए कम प्रवण लिखा जाता है।

उदाहरण के लिए निम्न अभिव्यक्ति लें जहां typeof ऑपरेटर को ब्रांड्स के बिना उपयोग किया जाता है। typeof रिक्त स्ट्रिंग शाब्दिक और एक संख्या, या स्ट्रिंग अक्षर के प्रकार के बीच concatenation के परिणाम के प्रकार को वापस कर देगा?

typeof "" + 42 

ऑपरेटर ऊपर कहा गया है और precedence of the operators typeof and + की परिभाषा को देखते हुए, ऐसा लगता है कि पिछले एक्सप्रेशन के बराबर है: इस मामले में

typeof("") + 42 // Returns the string `string42` 

, typeof साथ कोष्ठकों का उपयोग करने के लिए और अधिक स्पष्टता लाना होगा आप जो व्यक्त करने की कोशिश कर रहे हैं:

typeof("" + 42) // Returns the string `string` 
संबंधित मुद्दे