अल्पविराम ऑपरेटर अपने प्रत्येक ऑपरेंड (बाएं से दाएं) का मूल्यांकन करता है और अंतिम ऑपरेंड का मान लौटाता है।
console.log((1, 2)); // Returns 2 in console
console.log((a = b = 3, c = 4)); // Returns 4 in console
तो, एक उदाहरण देखते हैं:
var a = {
foo: function() {
console.log(this === window);
}
};
a.foo(); // Returns 'false' in console
(0, a.foo)(); // Returns 'true' in console
अब, foo
विधि में, (क्योंकि जुड़ा हुआ है ) के this
बराबर है । इसलिए यदि आप सीधे कॉल करते हैं ), यह कंसोल में लॉग इन करेगा ।a
foo
a
a.foo(
false
लेकिन, अगर आपको कॉल किया गया था (0, a.foo)()
। अभिव्यक्ति (0, a.foo)
अपने प्रत्येक ऑपरेंड (बाएं से दाएं) का मूल्यांकन करेगी और अंतिम ऑपरेंड का मान लौटाएगी। दूसरे शब्दों में, (0, a.foo)
के बराबर है
function() {
console.log(this === window);
}
चूंकि यह फ़ंक्शन अब किसी भी चीज़ से जुड़ा नहीं है, this
इसलिए यह वैश्विक वस्तु है window
। इसीलिए true
कॉल करते समय कंसोल में लॉग इन करें (0, a.foo)()
।
_b.a.call()
इरादा साफ करने के लिए उन्हें ऐसा करना चाहिए था ।