एक दिलचस्प बात जो मैंने पहले कभी नहीं देखी है उसे किसी अन्य प्रश्न में पोस्ट किया गया था।जावास्क्रिप्ट `+ + i` के रूप में क्या व्याख्या करता है?
var i = + +1;
उन्होंने सोचा कि अतिरिक्त +
एक स्ट्रिंग के लिए इसे परिवर्तित, लेकिन वे केवल एक स्ट्रिंग है जो यह कन्वर्ट करने के लिए की वजह से करने के लिए जोड़ रहे थे: वे की तरह कुछ था।
हालांकि, यह मुझे प्रश्न पर ले जाता है: यहां क्या चल रहा है?
मैं वास्तव में एक संकलक त्रुटि होने की उम्मीद करता था, लेकिन जावास्क्रिप्ट (कम से कम क्रोम में) इसके साथ ठीक है ... यह मूल रूप से कुछ भी नहीं करता है। Demo
var i = 5;
var j = + +i;
document.body.innerHTML = i === j ? 'Same' : 'Different';
किसी को भी पता है कि वास्तव में होने वाली है और क्या जावास्क्रिप्ट इस प्रक्रिया के साथ क्या कर रहा है:
मैं प्रदर्शित करने के लिए एक छोटे से JSFiddle बनाया?
एकमैं शायद सोचा था कि यह ++i
है जैसे कि यह इलाज होगा, लेकिन i
को बढ़ा नहीं है, और आप इसे एक मूल्य (जैसे, + +5
) है, जो आप के साथ ऐसा नहीं कर सकते के साथ भी कर सकते हैं ++
(जैसे, ++5
है संदर्भ त्रुटि)।
स्पेसिंग भी इसे प्रभावित नहीं करता है (उदाहरण के लिए, + + 1
और + +1
समान हैं)।
मेरा सबसे अच्छा अनुमान यह है कि यह अनिवार्य रूप से उन्हें सकारात्मक/नकारात्मक संकेतों के रूप में व्यवहार कर रहा है और उन्हें एक साथ रख रहा है। यह 1 == - -1
और -1 == + -1
जैसा दिखता है, लेकिन यह इतना अजीब है।
क्या यह सिर्फ एक विचित्र व्यवहार है, या क्या इसे कहीं मानक में दस्तावेज किया गया है?
यह मेरे लिए लग रहा है '+' ऑपरेटर की तरह के रूप में वैकल्पिक बाईं संकार्य व्यवहार करता है। यदि कोई बाएं ऑपरेंड नहीं है, तो यह सही ऑपरेंड लौटाता है। – Amy
उनके बीच की जगह वाले '+' या '-' ऑपरेटर केवल सरल '+/-' ऑपरेटर हैं। आप '+ + 3' कर सकते हैं और यह आपको' 3' देगा। इसके बारे में कुछ भी अजीब नहीं है – galchen
http://pythontutor.com/javascript.html#mode=edit –