मैं तुरंत लागू किए गए कार्यों के बारे में जानकारी ढूंढ रहा हूं, और कहीं न कहीं मैं इस अंकन पर अड़ गया हूं:
+function(){console.log("Something.")}()
क्या कोई मुझे समझा सकता +
है कि फ़ंक्शन के सामने संकेत का क्या अर्थ है / करता है?
मैं तुरंत लागू किए गए कार्यों के बारे में जानकारी ढूंढ रहा हूं, और कहीं न कहीं मैं इस अंकन पर अड़ गया हूं:
+function(){console.log("Something.")}()
क्या कोई मुझे समझा सकता +
है कि फ़ंक्शन के सामने संकेत का क्या अर्थ है / करता है?
जवाबों:
यह पार्सर को +
अभिव्यक्ति के रूप में निम्नलिखित भाग का इलाज करने के लिए मजबूर करता है । यह आमतौर पर उन कार्यों के लिए उपयोग किया जाता है जिन्हें तुरंत लागू किया जाता है, जैसे:
+function() { console.log("Foo!"); }();
+
वहाँ के बिना , अगर पार्सर एक ऐसी स्थिति में है जहाँ वह एक बयान की उम्मीद कर रहा है (जो एक अभिव्यक्ति या कई गैर-अभिव्यक्ति कथन हो सकता है), शब्द एक फ़ंक्शन अभिव्यक्ति की बजाय function
फ़ंक्शन घोषणा की शुरुआत की तरह दिखता है और इसलिए निम्न (ऊपर की पंक्ति के अंत में) एक वाक्यविन्यास त्रुटि होगी (जैसा कि उदाहरण में एक नाम की अनुपस्थिति होगी)। साथ , यह एक समारोह अभिव्यक्ति करता है, जिसका अर्थ है नाम वैकल्पिक है और जो समारोह है, जो लागू किया जा सकता है के लिए एक संदर्भ में परिणाम है, तो कोष्ठक मान्य हैं।()
+
+
विकल्पों में से एक है। यह भी हो सकता है -
, !
, ~
, या किसी भी अन्य एकल ऑपरेटर के बारे में। वैकल्पिक रूप से, आप कोष्ठक का उपयोग कर सकते हैं (यह अधिक सामान्य है, लेकिन न तो अधिक और न ही कम सही रूप से सही है):
(function() { console.log("Foo!"); })();
// or
(function() { console.log("Foo!"); }());
@ TJCrowder के उत्तर के लिए सहायक, +
आमतौर पर मूल्य के संख्यात्मक कास्टिंग को बाध्य करने के लिए उपयोग किया जाता है क्योंकि यह SO उत्तर बताता है । इस उदाहरण में इसे 'यूनीरी प्लस ऑपरेटर' (गॉगलिंग में आसानी के लिए) कहा जाता है।
var num = +variant;
तो एक फ़ंक्शन के सामने यह फ़ंक्शन के परिणाम को संख्या के रूप में व्याख्या करने के लिए मजबूर करने का एक तरीका हो सकता है। मुझे संदेह है कि यह अभी तक होता है, लेकिन सैद्धांतिक रूप से जेआईटी उस फ़ंक्शन को संख्यात्मक-केवल फ़ंक्शन आदि के रूप में संकलित करने के लिए उपयोग कर सकता है। हालांकि, बड़े पैमाने पर अभिव्यक्ति में उपयोग किए जाने के दौरान अनियंत्रित प्लस को रोकने के लिए, आपको कोष्ठक की आवश्यकता होगी:
blah + (+(function(){ var scope; return "4"; })());
(+function() { ... })()
संकेतन (तथ्य से अलग है कि इस सवाल का जवाब नहीं है) त्रुटियों के बिना निष्पादित कभी नहीं कर सकते हैं।
3++function...
समान नहीं है।
+function...
अपने आप में अनावश्यक है। वही परिणाम हो सकता है blah + function( ){ ... }( );
जिसके साथ रैपिंग ब्रैकेट की आवश्यकता को नकारना होगा।
तो संक्षिप्त उत्तर यह है कि यह एक तरह से या किसी अन्य में फ़ंक्शन परिणाम का उपयोग करके एक वाक्यविन्यास त्रुटि को रोकता है।
आप उस इंजन को भी निर्देश दे सकते हैं जिसे आप void
ऑपरेटर का उपयोग करके रिटर्न वैल्यू में दिलचस्पी नहीं ले रहे हैं :
void function() { console.log("Foo!"); }();
बेशक, पूरी चीज़ के चारों ओर ब्रेस लगाना भी उस उद्देश्य को पूरा करता है।