मैं रूबी और जावास्क्रिप्ट और पुरुष जैसी भाषाओं में कुछ विषमताएं के बारे में यह बहुत अजीब screencast कल देखा है पता चलता है कि:क्यों ऐरे + ऐरे खाली स्ट्रिंग के बराबर है?
[] + [] -> "" // returns empty string
बहुत स्पष्ट नहीं ...
मैं करने के लिए जाने का फैसला किया गया है अधिक जानकारी प्राप्त करने के लिए ECMAscript language specification।
11.6.1 अलावा ऑपरेटर (+)
अलावा ऑपरेटर या तो स्ट्रिंग संयोजन या संख्यात्मक अलावा करता है: मैं
+
ऑपरेटर कार्यान्वयन (p.75) जो कहते हैं के साथ शुरू कर दिया है।
उत्पादन AdditiveExpression: AdditiveExpression + MultiplicativeExpression का मूल्यांकन इस प्रकार किया जाता है:
1. AdditiveExpression का मूल्यांकन करने का परिणाम होने दें।
2. लैवल को GetValue (lref) दें।
3. Rref को गुणक एक्सपेरेशन का मूल्यांकन करने का नतीजा दें।
4. रावल को GetValue (rref) होने दें।
5. lprim को अपराधी (लालसा) दें।
6. rprim को अपराधी (रावल) होने दें।
7. यदि टाइप (एलप्रिम) स्ट्रिंग या टाइप (आरप्रिम) स्ट्रिंग है, तो
ए। स्ट्रिंग को वापस लौटाएं जो ToString (lprim) को टोनस्ट्रिंग (आरप्रिम)
8. को टोन नम्बर (lprim) और ToNumber (rprim) में अतिरिक्त ऑपरेशन लागू करने का परिणाम लौटाएं। 11.6.3 से नीचे नोट देखें।नोट 1 चरण 5 और 6 में ToPrimitive को कॉल में कोई संकेत प्रदान नहीं किया गया है। सभी मूल ईसीएमएस्क्रिप्ट ऑब्जेक्ट्स को छोड़कर दिनांक वस्तुएं संकेतों की अनुपस्थिति को संभालती हैं जैसे कि संकेत संख्या दी गई थी; दिनांक वस्तुएं संकेत के अनुपस्थिति को संभालती हैं जैसे कि संकेत स्ट्रिंग दिया गया था। मेजबान वस्तुएं किसी अन्य तरीके से एक संकेत की अनुपस्थिति को संभाल सकती हैं।
नोट 2 चरण 7 लॉजिकल-ऑपरेशन के बजाय लॉजिकल-या ऑपरेशन का उपयोग करके संबंध ऑपरेटर (11.8.5) के तुलनात्मक तुलना एल्गोरिदम के चरण 3 से अलग है।
मेरा अनुमान है कि बिंदु 7 विभिन्न मूल्यांकन/रूपांतरण के माध्यम से किसी तरह के रूप में पहले वर्णित है, लेकिन मैं समझ नहीं क्या वास्तव में है happenning पहुँच गया था ...
किसी के लिए एक बहुत सरल स्पष्टीकरण प्रदान कर सकता हूँ था इस ?
मैं क्रम में थोड़ा बेहतर यह सब समझने के लिए क्यों जवाब देने की कोशिश करने को तैयार हूँ:
[] + {} -> [object Object]
{} + [] -> 0
अब और अधिक समझ बनाता है। विनिर्देश बहुत सुंदर हो सकता है लेकिन इसमें कुछ लीड मिल गईं। धन्यवाद। –
@DidierGhys yep, ऑब्जेक्ट शाब्दिक के साथ सावधान, जावास्क्रिप्ट उन्हें जहां भी कर सकता है ब्लॉक के रूप में इलाज करने के लिए बहुत उत्सुक है। – Esailija
मैं इसे ध्यान में रखूंगा। –