2012-02-21 20 views
6

एक विधि के बजाय parseInt क्यों कार्य नहीं है?एक विधि क्यों नहीं है?

फंक्शन:

var i = parseInt(X); 

विधि:

var i = X.parseInt(); 
+3

यदि एक्स को अपरिभाषित किया गया तो यह एक त्रुटि फेंक देगा? – jishi

+4

@ जिशी: यदि 'एक्स' 'अपरिभाषित' है, तो संपत्ति को एक्सेस करने का प्रयास करते समय आपको हमेशा एक त्रुटि मिल जाएगी। यह सुनिश्चित नहीं है कि 'parseInt'' के साथ क्या करना होगा 'संख्या' की विधि नहीं है। –

+0

@amnotiam 'parseInt (अपरिभाषित) === NaN' अगर' पर्सिंट ''स्ट्रिंग' या 'संख्या'' की विधि थी तो' अपरिभाषित .parseInt() 'अपवाद फेंक देगा 'NaN' – JaredMcAteer

उत्तर

13

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

मैं 100% यकीन नहीं क्यों parseIntString का एक तरीका नहीं है हूँ, यह है कि सिवाय किसी भी चीज़ पर चलाया जा सकता है। ऐसा लगता है कि यह Math का हिस्सा हो सकता है लेकिन यह वास्तव में गणितीय संचालन नहीं है।

समाप्ति संपादित

parseInt वैश्विक वस्तु की एक विधि है। ब्राउज़र में, वैश्विक वस्तु window है। आप window.parseInt() पर कॉल कर सकते हैं, लेकिन जेएस इंजन आपको वैश्विक तरीकों से कॉल शॉर्टकट करने देता है।

उस ने कहा, इसके लिए कुछ लागत है क्योंकि इंजन को parseInt की परिभाषाओं की तलाश में स्कोप चेन स्कैन करना होगा। आम तौर पर, अगर मैं एक भी एक दायरे के भीतर इस तरह के एक विधि के लिए कॉल करने के लिए कर रही हूँ, मैं इसे बंद वैश्विक संदर्भ लेंगे:

var foo = function (someString) { 
    var bar; 

    // ... 

    bar = window.parseInt(someString, 10); 

    // ... 
}; 

मेरे कोड एक दायरे के भीतर विधि करने के लिए एक से अधिक कॉल करने के लिए की जरूरत है, हालांकि, मैं इसे स्थानीयकृत करता हूं और संदर्भ का उपयोग करता हूं:

var foo = function (someString, someOtherString) { 
    var parseInt = window.parseInt, 
     bar, 
     baz; 

    // ... 

    bar = parseInt(someString, 10); 
    baz = parseInt(someOtherString, 10); 

    // ... 
}; 
+3

से अपने रूपांतरण के बाद 120 नंबर असाइन किया गया है, मुझे लगता है कि वह शायद पूछ रहा है कि यह 'संख्या' का तरीका क्यों नहीं है। –

+2

हां, शायद वह है - हालांकि मुझे लगता है कि यह "स्ट्रिंग' की विधि" क्यों नहीं है? "। – JAAulde

+1

@amnotiam - यही मैंने भी पाया है, लेकिन parseInt() को (और शायद नहीं होना चाहिए (कम से कम, इसे संख्याओं पर चलाने के लिए आवश्यक नहीं है)) संख्याओं पर चलें लेकिन सबकुछ _but_ संख्याओं पर (मुझे लगता है कि यही कारण है कि यह 'संख्या' की विधि नहीं है)। – powerbuoy

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