2011-05-16 20 views
10

लगभग सभी मेरी जेएस फ़ाइलें अज्ञात कार्यों में लिपटे हैं। अगर मैं अज्ञात फ़ंक्शन के बाहर "use strict"; शामिल करता हूं, तो क्या सफ़ेद मोड अभी भी अनाम फ़ंक्शन पर लागू होता है?जावास्क्रिप्ट: सख्त मोड और अनाम कार्य

"use strict"; 

(function() { 
    // Is this code running under strict mode? 
})(); 

उत्तर

8

John Resig's article के मुताबिक, अगर आप फ़ाइल के शीर्ष पर सख्त मोड चालू है, यह लागू होता है:

उदाहरण के लिए, नीचे लिपि में गुमनाम समारोह के भीतर शरीर के लिए लागू सख्त मोड है पूरी फाइल/स्क्रिप्ट के लिए। तो हाँ, इसका तात्पर्य है कि यह अनाम कार्य के भीतर लागू होगा।

आप इसे किसी फ़ंक्शन के भीतर भी जोड़ सकते हैं, इस स्थिति में यह केवल उस विशिष्ट फ़ंक्शन पर लागू होता है।

जोड़ने के लिए संपादित: यहां the full specification है। एक प्रासंगिक पैरा:

10.1.1 सख्त मोड कोड

एक ECMAScript कार्यक्रम वाक्यात्मक इकाई या तो अप्रतिबंधित या सख्त मोड वाक्य रचना और शब्दों का उपयोग कर संसाधित किया जा सकता है। सख्त मोड का उपयोग करके संसाधित होने पर तीन प्रकार के ईसीएमएस्क्रिप्ट कोड को सख्त वैश्विक कोड, सख्त eval कोड, और सख्त कार्य कोड के रूप में जाना जाता है। कोड निम्न परिस्थितियों में सख्त मोड कोड के रूप में व्याख्या की है:

  • वैश्विक कोड सख्त वैश्विक कोड अगर यह एक निर्देशक प्रस्तावना है कि एक का प्रयोग करें सख्त निर्देशक शामिल (14.1 देखें) के साथ शुरू होता है।
  • इवल कोड सख्त eval कोड है यदि यह एक निर्देशक प्रस्तावना के साथ शुरू होता है जिसमें उपयोग सख्त निर्देश होता है या यदि कॉल करने के लिए कॉल एक प्रत्यक्ष कॉल है (15.1.2.1.1 देखें) सख्त मोड में मौजूद eval फ़ंक्शन में कोड।
  • फंक्शन कोड जो फंक्शनक्लेक्शनेशन, फंक्शनएक्सप्रेस, या एक्सेसर का हिस्सा है, फंक्शन एक्स्प्रेशन, या एक्सेसर प्रॉपर्टीएस्क्रिप्मेंट सख्त फ़ंक्शन कोड है यदि उसके फ़ंक्शन डिस्क्लेरेशन, फ़ंक्शनएक्सप्रेस, या प्रॉपर्टीएसिग्मेंट सख्त मोड कोड में निहित है या यदि फ़ंक्शन कोड डायरेक्टिव प्रस्तावना से शुरू होता है जिसमें उपयोग सख्त है निर्देशक।
  • अंतर्निहित फ़ंक्शन कन्स्ट्रक्टर के अंतिम तर्क के रूप में प्रदान किया गया फ़ंक्शन कोड सख्त फ़ंक्शन कोड है यदि अंतिम तर्क एक स्ट्रिंग है जिसे फ़ंक्शनबॉडी के रूप में संसाधित किया जाता है, एक निर्देश प्रस्ताव के साथ शुरू होता है जिसमें उपयोग सख्त निर्देश होता है।
संबंधित मुद्दे