2012-05-18 14 views
5

संभव डुप्लिकेट:
javascript numbers- immutableजावास्क्रिप्ट में संख्या अपरिवर्तनीय है?

मैं डगलस Crockford की किताब जावास्क्रिप्ट पढ़ें: अच्छा पार्ट्स। यह कहता है कि जावास्क्रिप्ट में संख्या अपरिवर्तनीय है। लेकिन जावास्क्रिप्ट में संख्याओं को मूल्य से कॉपी किया गया है और हम मूल्य बदलने के लिए ऑपरेटर ++ का उपयोग कर सकते हैं। तो क्यों यह अपरिवर्तनीय है? और आगे, यदि यह अपरिवर्तनीय है, तो मूल्यों की संख्या क्यों प्रतिलिपि बनाई जाती है?

+0

आपका उत्तर यहां है http://stackoverflow.com/questions/8248568/javascript-numbers-immutable – Gatekeeper

+1

@ गेटकीपर मुझे लगता है कि वे अलग हैं –

उत्तर

4

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

जब आप

var x = 4; 
x += 1; 

आप संख्या 5 में नंबर 4 नहीं बदला है। आपने 4 से 5 पर परिवर्तनीय x में संग्रहीत मान को बदल दिया है।

+0

यदि मैंने परिवर्तनीय एक्स में संग्रहीत मान बदल दिया है, तो यह क्यों अपरिवर्तनीय है। और मुझे लगता है कि "अपरिवर्तनीय" का अर्थ है कि आप स्मृति को बदल नहीं सकते हैं जो परिवर्तनीय बिंदु है। –

+0

और मुझे लगता है कि + = एक असाइनमेंट भी है जिसे आप वैरिएबल को दूसरी मेमोरी में बांधते हैं यदि एक्स अपरिवर्तनीय –

0

जब आप किसी ऑब्जेक्ट के सदस्यों को संशोधित करते हैं, तो आप इसकी सामग्री को संशोधित करते हैं। परिवर्तनीय का मूल्य (यानी संदर्भ) वही रहता है। यह mutable है,

जब आप एक स्ट्रिंग घोषित करते हैं, तो इसका मूल्य होता है, लेकिन जब आप उस मान को बदलते हैं तो एक नई स्ट्रिंग वास्तव में बनाई जाती है। इसका मतलब है कि यह अपरिवर्तनीय है।

इसी प्रकार संख्याओं के साथ। आप 3 को 4 नहीं बदल सकते हैं। ए 3 हमेशा 3 होता है, कभी और कुछ नहीं। तो जब आप एक चर को दूसरे नंबर पर असाइन करते हैं, तो आप स्मृति में एक नया नंबर बना रहे हैं, कुछ वैरिएबल द्वारा किसी भिन्न मान पर इंगित कुछ स्मृति की सामग्री निर्दिष्ट नहीं करते हैं।

+0

++ ऑपरेटर के बारे में क्या है, तो यह स्मृति में एक नया नंबर भी बनाता है? –

+0

x ++ x + = 1 के समान है, तो हां। –

+0

मुझे लगता है कि यह काफी उलझन में है। पायथन में, पूर्णांक भी अपरिवर्तनीय है और पायथन ++ ऑपरेटर प्रदान नहीं करता है। और मुझे लगता है कि इसके पीछे कारण यह है कि ++ लोगों को लगता है कि जगह में मूल्य बदल गया है। और मुझे समझ में नहीं आता कि जावास्क्रिप्ट इस तरह के असामान्य तरीके से व्यवहार क्यों करता है –

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