दिलचस्प पोस्ट
PHP के साथ आईपी पता देश प्राप्त करें PHP फाइलें स्थानीय देव सर्वर (एमएएमपी) द्वारा संसाधित करने के बजाय ब्राउज़र द्वारा डाउनलोड की जाती हैं पीएचपी में H: i के रूप में स्वरूपित समय के लिए 30 मिनट का समय जोड़ना 2 घुमाए गए आयताकारों के बीच प्रतिच्छेदन कैसे जांचें? एक्सएसएल एक्सएसएल: टेम्पलेट मैच = "/" एंड्रॉइड स्टूडियो में एआर फाइल बनाएं Android लंबी-टच इवेंट Google Drive API ProGuard (NPE) के साथ अच्छी तरह से नहीं खेलता है अलग प्रतिनिधि / डेटा स्रोत का उपयोग करते समय UITableView समस्या jQuery के सभी पाठ क्षेत्रों में मूल्यों की योग की गणना SQL सर्वर 2008 में सी # से संग्रहीत कार्यप्रणाली को XML कैसे पारित करना है? jquery – एक पाठ फ़ाइल पढ़ें? क्या एक अच्छा PHP भौगोलिक स्थान सेवा है? एकाधिक NSNotification पर्यवेक्षक जोड़ने से कैसे बचें? एक व्यू ग्रुप पर अधिकतम चौड़ाई निर्धारित करना

सख्त का उपयोग करते समय एक अनाम समारोह में "यह" क्यों अनिर्धारित है?

सफ़ेद मोड में जावास्क्रिप्ट का उपयोग करते समय यह अज्ञात समारोह में क्यों अनिर्धारित है? मैं समझता हूं कि यह क्यों समझ सकता है, लेकिन मुझे कोई ठोस जवाब नहीं मिला।

उदाहरण:

(function () { "use strict"; this.foo = "bar"; // *this* is undefined, why? }()); 

एक बेला में टेस्ट करें: http://jsfiddle.net/Pyr5g/1/ लॉगगर (फायरबग) को चेक करें

Solutions Collecting From Web of "सख्त का उपयोग करते समय एक अनाम समारोह में "यह" क्यों अनिर्धारित है?"

ऐसा इसलिए है, जब ईसीएमएक्रिप्ट 262 संस्करण 5 तक, एक बड़ा भ्रम था, यदि लोग जहां constructor pattern का उपयोग करते थे, तो new कीवर्ड का इस्तेमाल करना भूल गया था। यदि आप ईएस 3 में कंस्ट्रक्टर फ़ंक्शन बुलाते समय new उपयोग करना भूल गए हैं, तो this वैश्विक ऑब्जेक्ट (ब्राउज़र में window ) का संदर्भ देता है और आप वैश्विक ऑब्जेक्ट को वेरिएबल्स के साथ लहराते हैं।

यह भयानक व्यवहार था और ईसीएमए के लोगों ने तय किया कि this सिर्फ undefined करने के लिए सेट this गया।

उदाहरण:

 function myConstructor() { this.a = 'foo'; this.b = 'bar'; } myInstance = new myConstructor(); // all cool, all fine. a and b were created in a new local object myBadInstance = myConstructor(); // oh my gosh, we just created a, and b on the window object 

आखिरी पंक्ति ES5 सख्त में एक त्रुटि फेंकता है

 "TypeError: this is undefined" 

(जो एक बेहतर व्यवहार है)

"मुक्केबाजी" नामक एक तंत्र है जो बुलाए गए फ़ंक्शन के संदर्भ में प्रवेश करने से पहले this वस्तु को लपेटता है या बदलता है। आपके मामले में, इस का मान undefined होना चाहिए क्योंकि आप फ़ंक्शन को ऑब्जेक्ट की एक विधि के रूप में नहीं बुला रहे हैं। यदि गैर सख्त मोड, इस मामले में, यह window ऑब्जेक्ट द्वारा प्रतिस्थापित किया गया है। strict मोड में यह हमेशा अपरिवर्तित होता है, यही कारण है कि यह यहां undefined है।

आप अधिक जानकारी पा सकते हैं
https://developer.mozilla.org/en/JavaScript/Strict_mode

इस स्टैक अतिप्रवाह के उत्तर के अनुसार, आप इसके अंत में अनाम .call(this) इसका इस्तेमाल कर सकते हैं, बस कॉलिंग करके। .call(this)

 (function () { "use strict"; this.foo = "bar"; }).call(this);