2010-06-07 9 views

उत्तर

23

'+' ऑपरेटर दोनों तारों और संख्याओं के लिए परिभाषित किया गया है, इसलिए जब आप इसे स्ट्रिंग और संख्या पर लागू करते हैं, तो संख्या इतनी स्ट्रिंग को परिवर्तित कर दी जाएगी, तो तारों को समेकित किया जाएगा: '7' + 4 => '7' + '4' => '74' लेकिन '-' केवल संख्याओं के लिए परिभाषित किया गया है, स्ट्रिंग नहीं, इसलिए स्ट्रिंग '7' को संख्या में परिवर्तित कर दिया जाएगा: '7' - 4 => 7 - 4 => 3

15

+ ऑपरेटर को संगतता और जोड़ करने के लिए जावास्क्रिप्ट में ओवरलोड किया गया है। जिस तरह जावास्क्रिप्ट निर्धारित करता है कि कौन सा ऑपरेशन संचालित करने के लिए ऑपरेंड पर आधारित है। यदि ऑपरेटरों में से एक वर्ग Number (या number आदिम प्रकार) का नहीं है, तो दोनों को संयम के लिए तारों पर डाला जाएगा।

3 + 3 = 6 
3 + '3' = 33 
'3' + 3 = 33 
(new Object) + 3 = '[object Object]3'

- ऑपरेटर, तथापि, केवल संख्या के लिए है और इस तरह ऑपरेंड हमेशा आपरेशन के दौरान नंबरों पर डाली जाएगी।

+0

को जावा काम और जिस तरह से मजेदार बग का कारण बनता है उससे प्यार करना चाहिए। – pxl

+0

woops, मतलब जावास्क्रिप्ट, टाइप जावा। – pxl

+0

कोई भी कमजोर टाइपिंग के बारे में कोई मजाक नहीं बनाया? वह मुझे निराश करता है। –

29

+ स्ट्रिंग कॉन्सटेनेशन ऑपरेटर है, इसलिए जब आप '7' + 4 करते हैं तो आप एक स्ट्रिंग में 4 को जोड़ रहे हैं और इसे जोड़ रहे हैं। - ऑपरेटर के साथ ऐसी कोई अस्पष्टता नहीं है।

आप स्पष्ट उपयोग parseInt() या parseFloat() होना चाहते हैं:

parseInt('7', 10) + 4 

क्यों 10 मूलांक निर्दिष्ट? तो '077' को ऑक्टल के रूप में पार्स नहीं किया गया है।

+3

बस मामले में: आधार पैरामीटर के साथ parseInt ('7', 10) का उपयोग करें, ताकि '077' को ऑक्टल पूर्णांक के रूप में गलत नहीं किया जाएगा। – Residuum

+0

@Residuum उत्कृष्ट बिंदु। – cletus

+1

या ... आप 'संख्या ('077') का उपयोग कर सकते हैं जो कुछ हद तक 'parseFloat' जैसा कार्य करता है और हमेशा स्ट्रिंग को आधार 10 के रूप में व्यवहार करता है। –

2

क्योंकि +, एकाग्रता के लिए है आप दो नंबर जोड़ना चाहते हैं तो आप उन्हें पहले parseInt() पार्स और चाहिए अगर - संकेत घटाव

के लिए
2

संकेत है + जावास्क्रिप्ट में, संयोजन पहले तो इसके अलावा के रूप में व्याख्या की वजह से है तथ्य यह है कि पहला भाग एक स्ट्रिंग ('7') है। इस प्रकार दुभाषिया दूसरे भाग (4) को स्ट्रिंग में परिवर्तित करता है और इसे संयोजित करता है।

'7' - 4 के लिए, घटाव के अलावा कोई अन्य अर्थ नहीं है, इस प्रकार घटाव किया जाता है।

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