2016-01-27 7 views
7

की शुरुआत में जावास्क्रिप्ट 0 मैं बस संख्या की शुरुआत में 0-एस के साथ जेएस तर्क समझना चाहता हूं। उदाहरण के लिएसंख्या

var x = 09.3 
// here x == 9.3 
// other example 
09.3 == 9.3 
// returns true 

// but check this one 
var x = 02.5 
// Uncaught SyntaxError: Unexpected number 
// or this one 
02.5 == 2.5 
// same error here 

किसी को भी व्याख्या कर सकते हैं, यह कैसे काम करता है, क्यों पहले उदाहरण में यह काम करता है, और अग्रणी शून्य पर ध्यान नहीं देता है, लेकिन दूसरे उदाहरण में यह मुझे एक सिंटैक्स त्रुटि देता है

धन्यवाद

+6

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Grammar_and_types#Integers – hindmost

+2

मेरे ब्राउज़र में, '09.3' निश्चित रूप से '0.3' के बराबर नहीं है। आप किस ब्राउजर (या पर्यावरण) का उपयोग कर रहे हैं? – Pointy

+0

प्वाइंट, गलती के लिए खेद है, मेरा मतलब है 9.3 – Gor

उत्तर

15

एक संख्यात्मक शाब्दिक पर 0 अग्रणी इंगित करता है कि एक अष्टाधारी पूर्णांक इरादा, जब तकदूसरा अंकों 8 या 9 है। उस स्थिति में, अग्रणी 0 अनदेखा किया गया है।

क्योंकि ऑक्टल न्यूमेरिक अक्षर पूर्णांक होना चाहिए, 02.5 गलत है।

यह व्यवहार 2014 में फ़ायरफ़ॉक्स में एक बग के रूप में लॉग किया गया था, लेकिन क्योंकि दुनिया में इतना जावास्क्रिप्ट कोड है और इसमें से अधिकतर (शायद अनजाने में) 09.3 पर एक वाक्यविन्यास त्रुटि नहीं है, बग को चिह्नित किया गया था "WONTFIX "।

जैसा कि नीचे दी गई टिप्पणी में बताया गया है, "सख्त" मोड में ऑक्टल स्थिरांक पूरी तरह से अस्वीकृत नहीं हैं।

+2

न केवल दूसरा अंक - यदि कोई अंक 8 या 9 है, तो प्रमुख 0 को अनदेखा किया जाता है। – Barmar

+0

यह भी उल्लेखनीय हो सकता है कि वाक्यविन्यास ES5 में बहिष्कृत किया गया था, इसलिए इस समय वर्षों के लिए अमान्य है। – zerkms

+0

@ बामार हम्म एमडीएन का तात्पर्य है कि दूसरा अंक महत्वपूर्ण है; मैं फिर से spec की जांच करेंगे। * संपादित करें * एमडीएन की तरह दिखता है गलत है (या बुरी तरह से शब्द)। – Pointy

5

एक अग्रणी शून्य एक ऑक्टल (आधार 8) संख्या इंगित करता है (दशमलव के आधार पर - आधार 10 - संख्या)।

एक अग्रणी 0x हेक्साडेसिमल संख्या इंगित करता है, और एक अग्रणी 0 बी बाइनरी संख्या इंगित करता है।

इसलिए 09.3 दशमलव पर डिफ़ॉल्ट है क्योंकि अंक '9' ऑक्टल नोटेशन में मौजूद नहीं है।

संपादित करें (नीचे क्रेडिट इवान ट्रिंबोली): 02.5 अपवाद फेंकता है क्योंकि ऑक्टल अक्षरों को पूर्णांक होना चाहिए।

+1

यह अभी भी यह स्पष्ट नहीं करता है कि यह अपवाद क्यों फेंकता है, क्योंकि ऑक्टल अक्षरों को पूर्णांक होना चाहिए। –

+0

'09.3'' 9.3' के लिए डिफ़ॉल्ट, '0.3' नहीं। यह सवाल में एक टाइपो था, जिसे संपादित किया गया है। – Barmar

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