अल्पविराम ऑपरेटर अपने प्रत्येक ऑपरेंड (बाएं से दाएं) का मूल्यांकन करता है और अंतिम ऑपरेंड का मान लौटाता है।
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बराबर है । इसलिए यदि आप सीधे कॉल करते हैं ), यह कंसोल में लॉग इन करेगा ।afooaa.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()इरादा साफ करने के लिए उन्हें ऐसा करना चाहिए था ।