JavaScript में अनबाउंड फ़ंक्शन का कॉन्टेक्स्ट
आइए देखें कि क्या होता है यदि एक फ़ंक्शन में
this निर्दिष्ट किया गया हो, लेकिन वह
किसी भी एलिमेंट से बाउंड न हो, ऐसे:
function func() {
console.log(this);
}
func();
इस मामले में, परिणाम इस बात पर निर्भर करता है कि
स्ट्रिक्ट मोड
चालू है या नहीं। यदि मोड नॉन-स्ट्रिक्ट है,
तो this में window का रेफरेंस
स्टोर रहेगा:
function func() {
console.log(this); // विंडो window का रेफरेंस
}
func();
और यदि मोड स्ट्रिक्ट है, तो this में
undefined स्टोर रहेगा:
"use strict";
function func() {
console.log(this); // undefined
}
func();
ऊपर कही गई बातों से ऐसा लग सकता है कि
स्ट्रिक्ट मोड में this हमेशा
undefined ही होगा। ऐसा बिल्कुल नहीं है! यदि केवल
this को फ़ंक्शन के बाहर प्रिंट किया जाए, तो उसमें
window का रेफरेंस होगा, मोड पर ध्यान दिए बिना:
"use strict";
console.log(this); // this में window का रेफरेंस
निष्कर्ष
किसी भी फ़ंक्शन में this लिखा जा सकता है,
इससे JavaScript में कोई एरर नहीं आएगी।
लेकिन इस this में वास्तव में क्या होगा
यह फ़ंक्शन के कॉल होने तक परिभाषित नहीं होता।
साथ ही, फ़ंक्शन के अलग-अलग कॉल पर this
का मान अलग-अलग हो सकता है। यह पूरी तरह से उस कॉन्टेक्स्ट पर निर्भर करता है
जिसमें फ़ंक्शन को कॉल किया गया था।