किसी ने मुझे यह ईमेल भेजा:दो समान तार एक-दूसरे के बराबर कैसे नहीं होते हैं?
इन दोनों चेतावनी झूठी क्यों हैं?
alert('a' == 'a');
alert('a' === 'a');
यहाँ एक डेमो
किसी ने मुझे यह ईमेल भेजा:दो समान तार एक-दूसरे के बराबर कैसे नहीं होते हैं?
इन दोनों चेतावनी झूठी क्यों हैं?
alert('a' == 'a');
alert('a' === 'a');
यहाँ एक डेमो
यह एक चाल है है? क्या आपने कुछ विशेष यूनिकोड जादू के साथ उन a's
उत्पन्न किए? मैं, नष्ट कर दिया जितना वे
@ ट्रिबर्बेस्ट - वे अभी भी मेरे लिए सच दिखाते हैं http://jsfiddle.net/sQrST/3/ –
प्रत्येक के पहले a
वास्तव में एक सरल a
नहीं है a's
और फिर से टाइप किया उन्हें, और अब दोनों अलर्ट true
दिखा। यदि आप इसके बाद कर्सर को सही स्थिति में रखते हैं और बैकस्पेस हिट करते हैं, तो आप "कुछ" हटाते हैं, और फिर यह true
देता है।
मैं अपने a
स्ट्रिंग की नकल की है, यह मैं जब इस कोड को चल क्या मिलता है:
$a='a';
var_dump($a);
string(4) "a"
देखें यहाँ क्या गलत है?
echo base64_encode($a);
..returns:
YeKAjA==
है, पत्र a
के साथ एक सरल स्ट्रिंग के लिए, यह केवल YQ==
होना चाहिए स्ट्रिंग लंबाई 4.
इसके अलावा, यह है।
अतिरिक्त चरित्र को "ZERO WIDTH NON-JOINER" कहा जाता है।
पहले 'एक' सांत्वना के लिए कहते हैं:
'a'.charCodeAt(0)
97
'a'.charCodeAt(1)
8204
8204 पल के लिए जबकि के लिए Zero-width non-joiner
एक यूनिकोड मान प्रतीत हो रहा है इसकी:
'a'.charCodeAt(0)
97
'a'.charCodeAt(1)
NaN
यह है कि विभिन्न स्वाभाविक है तार अलग हैं :)।
हा-हा ... लगता है कि आप अन्य भाषा में एक और 'ए' लिखते हैं xD –
कॉपी और एक फ़ाइल में चिपकाया। हेक्स संपादक के साथ देखा गया। हां, प्रत्येक तरफ एक 'ए' 61 ई 2 80 8 सी ('ए' + कुछ यूनिकोड चार) है। –
ई 2808 सी यूनिकोड 'शून्य चौड़ाई गैर-योजक' चरित्र है और यह अदृश्य है जब दिए गए पाठ से प्रासंगिक नहीं है। हालांकि, यह एक स्ट्रिंग में काफी मान्य है। – Rushyo