2015-10-19 8 views
5

मैंने देखा है कि babelबैबेल लपेटें _sourceMapSupport.install() (0, ...)() के साथ क्यों?

import { install } from 'source-map-support'; 
install(); 

transpiled

var _sourceMapSupport = require('source-map-support'); 
(0, _sourceMapSupport.install)(); 

में babelinstall समारोह के आह्वान में पहली अभिव्यक्ति के रूप में 0 साथ अल्पविराम ऑपरेटर का उपयोग क्यों किया?

+1

@ ओरीओल निष्पक्ष होने के लिए, ओपी यह भी पूछ रहा है कि बेबेल ऐसा क्यों करता है। – royhowie

+0

@ ओरियल रॉयॉई सही है। मैंने अपना प्रश्न संपादित कर लिया है, कृपया डुप्लिकेट चिह्न हटा दें। – borisdiakur

+0

हां, क्षमा करें। मैंने फिर से खोल दिया है और कारण समझाया है। – Oriol

उत्तर

4

अल्पविराम What does a comma do in JavaScript expressions? में समझाया गया है। मूल रूप से, यह सभी अभिव्यक्तियों का मूल्यांकन करता है, और पिछले एक द्वारा लौटाए गए मूल्य को वापस देता है।

शायद, इसका उपयोग करने का कारण विधि को कॉल करने में सक्षम होना है जैसे कि यह कोई विधि नहीं था।

इस समारोह पर विचार करें:

function f() { return this; } 

और यह एक विधि बनाते हैं:

var o = {f: f} 

फिर, हालांकि f === o.f, परिणाम है कि कैसे आप इसे कहते आधार पर भिन्न होगी:

o.f(); // o 
f(); // global object (in non-strict mode) 
f(); // undefined (in strict mode) 

तो बेबेल फ़ंक्शन का संदर्भ प्राप्त करने के लिए अल्पविराम दृष्टिकोण का उपयोग करता है, बिना सहयोग के वस्तु के साथ इसे inging। इस तरह विधि को एक वैश्विक समारोह के रूप में कहा जा सकता है, बिना किसी के।

(0, o.f)(); // global object (in non-strict mode) 
(0, o.f)(); // undefined (in strict mode) 
संबंधित मुद्दे