2012-02-21 14 views
11

अगर मैंमैं एक एकल बिंदु के साथ एक पूर्णांक की संपत्ति का उपयोग क्यों नहीं कर सकता?

3.toFixed(5) 

वहाँ एक सिंटैक्स त्रुटि है लिखने की कोशिश। डबल डॉट्स का उपयोग करके, एक जगह डालने, तीन कोष्ठक में डालने या ब्रैकेट नोटेशन का उपयोग करने से यह ठीक से काम करने की अनुमति देता है।

3..toFixed(5) 
3 .toFixed(5) 
(3).toFixed(5) 
3["toFixed"](5) 

एकल डॉट नोटेशन क्यों नहीं काम करता है और इसके बजाय इनमें से कौन सा विकल्प उपयोग करना चाहिए?

+0

ध्यान दें कि समस्या केवल पूर्णांक अक्षर के साथ उत्पन्न होती है- दशमलव किसी भी तरीके से कॉल करने में प्रसन्न होता है। 3.14.toFixed (2)। – kennebec

+0

@kennebec अच्छा बिंदु, मैंने संख्या के बजाय पूर्णांक कहने के लिए प्रश्न शीर्षक संपादित किया। –

+0

संबंधित, यदि डुप्लिकेट नहीं है: [संख्या अक्षरों की संख्या संख्या विधियों तक क्यों पहुंच नहीं है?] (Http://stackoverflow.com/q/4046342/1048572) – Bergi

उत्तर

16

अवधि का हिस्सा है, इसलिए कोड के रूप में ही स्वीकार किया जाएगा:

(3.)toFixed(5) 

यह स्वाभाविक रूप से, एक सिंटैक्स त्रुटि देने के रूप में आप तुरंत एक पहचानकर्ता के साथ नंबर का पालन नहीं कर सकते हैं।

कोई भी विधि जो संख्या के हिस्से के रूप में व्याख्या करने से अवधि को बनाए रखती है, काम करेगी। मुझे लगता है कि सबसे स्पष्ट तरीका संख्या के चारों ओर कोष्ठक रखना है:

(3).toFixed(5) 
7

आप जावास्क्रिप्ट के टोकननाइज़र में दोष के कारण इसे एक्सेस नहीं कर सकते हैं। जावास्क्रिप्ट एक चल बिन्दु शाब्दिक रूप में एक नंबर पर डॉट नोटेशन पार्स करने के लिए कोशिश करता है, ताकि आप एक संपत्ति या विधि के साथ इसे का पालन नहीं कर सकते हैं:

2.toString(); // raises SyntaxError

आप उल्लेख किया है, वहाँ समाधान के एक जोड़े हैं जो कर सकते हैं क्रमशः संख्या अक्षर के रूप में कार्य करने के क्रम में प्रयोग किया जाना चाहिए। इनमें से कोई भी समान रूप से मान्य है।

2..toString(); // the second point is correctly recognized 
2 .toString(); // note the space left to the dot 
(2).toString(); // 2 is evaluated first 

वस्तु के उपयोग और गुण के पीछे अधिक समझने के लिए, Javascript Garden की जाँच करें।

+4

आपका अधिकांश उत्तर वास्तव में उन चीज़ों को दोहरा रहा है जो ओपी पहले से ही कहा गया है । । । – ruakh

+0

लेकिन वह बताता है कि यह क्यों काम करता है और उदाहरण के लिए कोई अंतर्निहित रूपांतरण काम पर नहीं है। –

+0

मुझे नहीं लगता कि "टोकनेज़र" सही शब्द है। – georg

3

क्योंकि जावास्क्रिप्ट जा रहा है या तो एक फ्लोटिंग प्वाइंट निरंतर की शुरुआत के रूप 3. व्याख्या यह काम नहीं करता है (जैसे 3.5) या फिर एक पूरे फ्लोटिंग प्वाइंट (3. == 3.0 साथ) स्थिर है, तो आप नहीं कर सकते पहचानकर्ता द्वारा इसका पालन करें (आपके मामले में, एक संपत्ति-नाम)। यह पहचानने में विफल रहता है कि आप और . को दो अलग टोकन के रूप में लक्षित करना चाहते हैं।

आपके कोई भी कामकाज मुझे ठीक लग रहा है।

+0

+1 पूरी तरह से समझ में आता है! – Meysam

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

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