इस दृष्टिकोण के लिए क्या दृष्टिकोण है? उदाहरण के लिए, गूगल OAuth एपीआई से:क्लोजर कंपाइलर में कोड (0, obj.method) (param1, param2) का उद्देश्य minified code
(0, _.Q)("gapi.auth.authorize", _.Ek.Ff);
(0, _.Q)("gapi.auth.checkSessionState", _.Ek.MH);
(0, _.Q)("gapi.auth.getAuthHeaderValueForFirstParty", _.Ek.Qe);
(0, _.Q)("gapi.auth.getToken", _.Ek.$f);
(0, _.Q)("gapi.auth.getVersionInfo", _.Ek.Wk);
(0, _.Q)("gapi.auth.init", _.Ek.gb);
(0, _.Q)("gapi.auth.setToken", _.Ek.Ym);
मेरे लिए
, यह बस
_.Q("gapi.auth.authorize", _.Ek.Ff);
_.Q("gapi.auth.checkSessionState", _Ek.MH);
...
outputting करने के लिए मैं यह नहीं है यह सोचते हैं रहा हूँ समान होना प्रतीत होता है। तो क्या अंतर है?
कंपाइलर अल्पविराम ऑपरेटर को दूसरी अभिव्यक्ति को अभिव्यक्ति के रूप में व्याख्या करने के लिए मजबूर कर रहा है। यदि '_.Q' के बजाय हमारे पास एक अनाम कार्य था, तो इसे लागू किया जाएगा (त्रुटि को फेंकने के बजाय)। इसके लिए यही एकमात्र कारण है जिसके बारे में मैं सोच सकता हूं। – bfavaretto
क्या आप एक उदाहरण दे सकते हैं? –
मेरा मतलब था '(0, फ़ंक्शन (ए, बी) {}) ("gapi.auth.authorize", _.Ek.Ff)' ठीक है, लेकिन 'फ़ंक्शन (ए, बी) {} ("gapi.auth प्राधिकरण ", _.Ek.Ff)' नहीं है (वाक्यविन्यास त्रुटि)। इसलिए संकलक इसे सुरक्षित रखने के लिए जोड़ रहा है, शून्य के बाद क्या होता है इस पर निर्भर करता है। किसी भी मामले में, शून्य बिल्कुल जरूरी नहीं होगा, इसलिए अब मेरे पास एक और अनुमान है: शायद कंपाइलर के लिए '_.Q' के बजाय 'eval' डालना संभव है; इस मामले में, '(0, eval)' एक अप्रत्यक्ष eval कॉल (या "वैश्विक eval") मजबूर करेगा। Http://stackoverflow.com/questions/9107240/1-evalthis-vs-evalthis-in-javascript देखें। – bfavaretto