2011-05-31 11 views
19
var string = "This is a string"; 
var thing = str.replace("string","thing"); 

console.log(string) 
>> "This is a string" 

console.log(thing) 
>> "This is a thing" 

क्या कोई और तरीका है जिसका उपयोग मैं प्रतिस्थापित करने के अलावा कर सकता हूं, जो मुझे एक नई स्ट्रिंग ऑब्जेक्ट दिए बिना स्ट्रिंग को बदल देगा?क्या जावास्क्रिप्ट में एक नई स्ट्रिंग बनाने के बिना स्ट्रिंग के हिस्से को प्रतिस्थापित करने का कोई तरीका है?

+0

मेरा सुझाव है कि आप कभी भी किसी भी भाषा में परिवर्तनीय नाम परिभाषित करते समय आरक्षित शब्दों (जैसे 'स्ट्रिंग') का उपयोग न करें। –

+1

'string' जावास्क्रिप्ट में एक आरक्षित शब्द नहीं है ([स्रोत] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Reserved_Words))। हालांकि, 'str'' अपरिभाषित है '। आप चर नामों को गड़बड़ कर दिया! – Iso

उत्तर

45

नहीं, जावास्क्रिप्ट में तार अपरिवर्तनीय हैं।

+3

आप ऐसा कुछ कर सकते हैं यद्यपि यदि आप एक नया चर बनाना नहीं चाहते हैं: 'string = string.replace (" string "," thing ");' –

8

ऐसा नहीं है कि मैं के बारे में पता कर रहा हूँ, लेकिन यदि कारण आप ऐसा करना चाहते हैं तो बस अपने कोड स्वच्छ तुम सिर्फ नए स्ट्रिंग वर्ष चर असाइन कर सकते हैं रखने के लिए है:

var string = "This is a string"; 
string = string.replace("string", "thing"); 
बेशक

इस वसीयत बस कोड को थोड़ा क्लीनर बनाएं और फिर भी एक नई स्ट्रिंग ऑब्जेक्ट बनाएं।

2

तारों के अपरिवर्तनीय कारण हैं। जावास्क्रिप्ट का उपयोग के रूप में फोन द्वारा साझा करने कलाओं, परिवर्तनशील स्ट्रिंग इस मामले में एक समस्या हो जाएगा:

function thinger(str) { 
    return str.replace("string", "thing"); 
} 

var str = "This is a str"; 
var thing = thinger(str); 

इस स्थिति आप अपने स्ट्रिंग मान द्वारा पारित हो करना चाहते हैं, लेकिन यह नहीं है। यदि str mutable था, तो चीज str बदल जाएगा, यह वास्तव में एक अजीब प्रभाव होगा।

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

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