जावास्क्रिप्ट का ऑक्टल संकट: पार्सइंट के दुर्व्यवहार के लिए समाधान
जावास्क्रिप्ट का पार्सइंट फ़ंक्शन अग्रणी शून्य के साथ संख्याओं का सामना करते समय लड़खड़ा सकता है। यह समस्या अग्रणी शून्य को अष्टक अंकों के रूप में व्याख्या करने की प्रवृत्ति से उत्पन्न होती है, जिससे गलत परिणाम सामने आते हैं।
उदाहरण:
parseInt('01'); // 1 parseInt('08'); // 0 (invalid octal digit)
समाधान:
सबसे सीधा समाधान संख्या का आधार, या मूलांक स्पष्ट रूप से प्रदान करना है। यह parseInt के दूसरे पैरामीटर का उपयोग करके किया जा सकता है:
parseInt('08', 10); // 8 (specifying base 10)
वैकल्पिक रूप से, नंबर कंस्ट्रक्टर का उपयोग संख्याओं को पार्स करने के लिए किया जा सकता है, जिसमें वे भी शामिल हैं अग्रणी शून्य:
Number('08'); // 8
एक अन्य तरीका स्ट्रिंग को पार्स करने से पहले बेस 10 में कनवर्ट करना है:
parseInt(parseInt('08', 8).toString(), 10); // 8 (convert octal to base 10)
अग्रणी शून्य को हटाने के लिए नियमित अभिव्यक्ति का उपयोग किया जा सकता है:
parseInt(/^0 (.*)$/gm('008')); // 8 (match and capture non-zero digits)
नोट:
जावास्क्रिप्ट के 5वें संस्करण (ईसीएमए-262) में, पार्सइंट का व्यवहार बदल गया है, समाप्त हो गया है अष्टक व्याख्या मुद्दा. हालाँकि, जावास्क्रिप्ट के पुराने संस्करणों के साथ अनुकूलता के लिए, अग्रणी शून्य वाली संख्याओं का सामना करते समय ऊपर उल्लिखित वर्कअराउंड में से एक का उपयोग करने की अनुशंसा की जाती है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3