2009-11-17 20 views
8

मैं स्ट्रिंग पर += का उपयोग कैसे कर सकता हूं, लेकिन मैं -= का उपयोग नहीं कर सकता?जावास्क्रिप्ट स्ट्रिंग असाइनमेंट ऑपरेटर

उदाहरण के लिए ...

var test = "Test"; 
var arr = "⇔" 

test += arr; 
alert(test); // Shows "Test⇔" 

test -= arr; 
alert(test); // Shows "NaN" 
+1

नोट: मुझे कोई डमी हूं; मुझे पता है कि आप एक स्ट्रिंग को "घटाना" नहीं कर सकते हैं। किसी ने मुझसे यह पूछा और मुझे यकीन नहीं था कि जवाब कैसे देना है, इसलिए मैं इसे यहां पोस्ट कर रहा हूं। –

+0

'+' ऑपरेटर कॉन्सटेनेशन ऑपरेटर है जब ऑपरेंड में से एक स्ट्रिंग है। – Gumbo

+1

तारों के लिए केवल दो ऑपरेटरों को परिभाषित किया गया है: '+' और '+ =' (https://developer.mozilla.org/en/Core_Javascript_1.5_Reference#Operators) –

उत्तर

11

संक्षिप्त उत्तर यह है - यह तारों के साथ काम करने के लिए परिभाषित नहीं है।

लंबा उत्तर: यदि आप दो स्ट्रिंग्स पर घटाव ऑपरेटर आज़माते हैं, तो यह पहले उन्हें संख्याओं में डाल देगा और फिर अंकगणित करेगा।

"10" - "2" = 8 

आप कुछ है कि गैर-संख्यात्मक है की कोशिश, तो आप एक NaN संबंधी त्रुटि मिलती है:

"AA" - "A" = NaN 
0

आम तौर पर, प्रोग्रामिंग भाषाओं स्ट्रिंग्स के लिए घटाव को परिभाषित नहीं है। + = वास्तव में पहली जगह में जोड़ नहीं है, यह concatenation है।

+0

php तारों से निपटने के लिए बहुत बेहतर है – streetparade

1

ऐसा इसलिए है क्योंकि शून्य चिह्न एक वैध स्ट्रिंग ऑपरेटर नहीं है, जबकि प्लस साइन दोनों नंबर (अतिरिक्त ऑपरेटर) और स्ट्रिंग्स (कॉन्सटेनेशन ऑपरेटर) को संभालने के लिए ओवरलोड किया गया है।

आप इससे क्या उम्मीद कर रहे थे?

+0

" कमी "ऑपरेटर एक सबस्ट्रिंग की तरह व्यवहार करेगा और पहले जो जोड़ा गया था उसे बाहर निकाल देगा। –

+0

उदाहरण में, दूसरी चेतावनी "टेस्ट" –

+0

दिखाएगी लेकिन यहां तक ​​कि संख्याओं के साथ भी शून्य चिह्न "कमी" नहीं है, यह शून्य-शून्य '--' है। माइनस-बराबर '- =' केवल एक सुविधा ऑपरेटर है जो 'ए = ए - बी' अभिव्यक्ति के अनुरूप एक कंपाउंड ऑपरेटर है –

0

क्योंकि + (प्लस साइन) स्ट्रिंग कॉन्सटेनेशन ऑपरेटर भी है, जबकि - (ऋण चिह्न) केवल घटाव पर लागू होता है। यदि जावास्क्रिप्ट एक साथ 2 तारों को जोड़ सकता है तो यह शिकायत नहीं करेगा, लेकिन यदि आप 2 तारों को घटाने का प्रयास करते हैं, तो यह कोई समझ नहीं आता है।

6

क्योंकि + ऑपरेटर तारों को जोड़ता है, लेकिन - ऑपरेटर केवल एक दूसरे से संख्या घटाता है।

क्यों - शायद इसलिए यह निर्धारित करना मुश्किल है कि लोग क्या करना चाहते हैं जब वे एक दूसरे से स्ट्रिंग घटाते हैं।

"My string is a very string-y string" - "string" 

इस क्या करना चाहिए:

उदाहरण के लिए

?

3

सभी ने कहा, -= ऑपरेटर स्ट्रिंग्स के साथ काम करने ओवरलोड न हो जाए, यह केवल के साथ काम करता नंबर।

आप तार के साथ इसका इस्तेमाल करने की कोशिश करते हैं, तो ऑपरेटर क्योंकि Number करने के लिए दोनों ऑपरेंड परिवर्तित करने की कोशिश करेंगे, यही वजह है कि आप NaN हो रही है,:

isNaN(+"foo"); // true 

पर arr सामग्री से छुटकारा पाने के लिए अपने test स्ट्रिंग, आप इसे replace कर सकते हैं:

var test = "Test", 
    arr = "⇔" 

test += arr; 
alert(test); // Shows "Test⇔" 

test = test.replace(arr, ""); // replace the content of 'arr' with "" on 'test' 
alert(test); // Shows "Test" 
संबंधित मुद्दे