var _private = my._private = my._private || {}
इस लाइन my._private
का उपयोग करता है, तो यह मौजूद है, अन्यथा एक नई वस्तु बनाने और my._private
के लिए सेट का मतलब है।
एक से अधिक असाइनमेंट अभिव्यक्ति का उपयोग किसी कथन में किया जा सकता है। असाइनमेंट ऑपरेटर इसका उपयोग करता है (खपत) जो इसके दाईं ओर है और उस मान को वैरिएबल के बाईं ओर अपने आउटपुट के रूप में प्रस्तुत करता है। इसलिए, इस मामले में, स्पष्टता के लिए कोष्ठक के साथ, उपरोक्त var _private = (my._private = (my._private || {}))
के बराबर है यह मामला lazy initialization का एक प्रकार है। एक कम संक्षिप्त संस्करण होगा:
if (!my._private) {
my._private = {};
}
var _private = my._private;
इस मामले में, ऐसा लगता है कि आलसी आरंभीकरण आलस्य से कहीं भी प्रारंभ के लिए और अधिक किया जाता है। दूसरे शब्दों में, सभी कार्यों में मौजूदा पंक्ति को दूर किए बिना my._private
को सुरक्षित रूप से बनाने या उपयोग करने के लिए इस पंक्ति को शामिल किया जा सकता है।
हम स्पष्ट रूप से संदर्भ खो रहे हैं लेकिन दूसरा उदाहरण 'my._private' सेट नहीं करता है ...: -? –
@ ÁlvaroG.Vicario आप सही हैं कि दूसरा उदाहरण पहले जैसा नहीं है। वास्तव में – jcolebrand