पार्सर कैसे पता होगा कि .
चरित्र निम्न भाग एक विधि कॉल के बजाय की संख्या का एक और हिस्सा सूचित करने के लिए क्या मतलब है? उदाहरण के लिए:
10.1 // This is a number with a floating point
10.toMillion() //How does it know that this shouldn't be part of the number?
इसी कारण से, आप संख्यात्मक अक्षरों पर विधियों को कॉल नहीं कर सकते हैं। शाब्दिक कोष्ठक (grouping operator) में रखकर, रनटाइम निहित अभिव्यक्ति का मूल्यांकन करेगा और उस मूल्यांकन के परिणामस्वरूप विधि लागू करेगा।
ग्रुपिंग ऑपरेटर .
चरित्र की अस्पष्टता को हटा देता है।
अद्यतन
कुछ सोचा और कल्पना के माध्यम से कुछ जांच के बाद, इसका कोई खास कारण क्या .
चरित्र इस प्रकार यह निर्धारित करने के लिए एक अग्रदर्शी के उपयोग की अनुमति नहीं करने के लिए है का हिस्सा है या एक संपत्ति पहचानकर्ता।
टिप्पणियों में उल्लिखित @ साइग्नसएक्स 1 के रूप में, आप दोनों स्थितियों (.
के बाद एक अंक और .
के बाद एक गैर-संख्यात्मक चरित्र के बाद) को एक लुकहेड के उपयोग से अलग किया जा सकता है। चूंकि पहचानकर्ता संख्या से शुरू नहीं कर सकते हैं, यदि कोई संख्यात्मक वर्ण .
का पालन करता है, तो यह एक संख्या होनी चाहिए। यदि एक गैर-संख्यात्मक वर्ण .
का पालन करता है, तो यह संख्या का हिस्सा नहीं हो सकता है। लेकिन यह बिल्कुल सही नहीं है।
एक स्थिति है जिसमें एक गैर संख्यात्मक कैरेक्टर .
चरित्र का अनुसरण कर सकते, लेकिन अभी भी नंबर का हिस्सा बनने नहीं है:
console.log(1.e5); // Logs '100000'
e
इंगित करता है कि क्या इस प्रकार प्रतिपादक है, और यह कर सकते हैं या तो लोअरकेस या अपरकेस हो। इस कारण से, लुकहेड का उपयोग करके ध्यान रखना होगा कि .
के बाद वाला वर्ण e
या E
है, तो यह अभी भी किसी विधि या संख्या का हिस्सा प्रस्तुत कर सकता है। संख्यात्मक अक्षर पर गुणों के उपयोग को अस्वीकार करना आसान है।
स्रोत
2012-10-11 09:02:43
Whya क्या आप 'Number.isNaN' की जांच कर रहे हैं? क्या आपका मतलब 'this.isNaN()' है? – David
नीचे दिए गए उत्तरों के अतिरिक्त, जांचें: '987654321..to मिलियन()' – Izkata
@ डेविड - यह सिर्फ 'isNaN (यह)' होगा (यह वैश्विक कार्य है, न कि 'नंबर.प्रोटोटाइप'' की संपत्ति। –