इसलिए मैं दूसरे दिन के आसपास खेल रहा था कि वास्तव में यह देखने के लिए कि जावास्क्रिप्ट में बड़े पैमाने पर काम कैसे होता है।
पहले मैंने कंसोल में इस उदाहरण की कोशिश की:
a = b = {};
a.foo = 'bar';
console.log(b.foo);
परिणाम एक चेतावनी में "बार" प्रदर्शित किया जा रहा था। यह काफी उचित है, aऔर bवास्तव में सिर्फ एक ही वस्तु के लिए उपनाम हैं। फिर मैंने सोचा, मैं इस उदाहरण को कैसे सरल बना सकता हूं।
a = b = 'foo';
a = 'bar';
console.log(b);
यह बहुत ज्यादा एक ही बात है, है ना? खैर इस बार, यह fooनहीं है barक्योंकि मैं पहले उदाहरण के व्यवहार से उम्मीद करूंगा।
क्यों होता है ऐसा?
NB इस उदाहरण को निम्न कोड के साथ और भी सरल बनाया जा सकता है:
a = {};
b = a;
a.foo = 'bar';
console.log(b.foo);
a = 'foo';
b = a;
a = 'bar';
console.log(b);
(मुझे संदेह है कि जावास्क्रिप्ट आदिमों को स्ट्रिंग्स और पूर्णांकों को अलग-अलग करने के लिए व्यवहार करता है। हैश एक पॉइंटर लौटाते हैं जबकि "कोर" प्राइमेटिव खुद की एक प्रति वापस करते हैं)