दिलचस्प पोस्ट
पता लगाएं कि कोई पृष्ठ एक लंबवत स्क्रॉलबार है या नहीं? आंकड़ा टिक में घातीय स्वरूपण को दबाएं एक्सेल इंटरॉप: _ वर्कशीट या वर्कशीट? कैसे POSIX श में स्क्रिप्ट निर्देशिका प्राप्त करने के लिए? एमएस चार्ट नियंत्रण सी # के लिए एक स्क्रॉल बार जोड़ना ईमेल इन्टेंट भेजें अजगर में "अप्रत्याशित इंडेंट" के साथ क्या करना है? ActiveRecord / Rails के साथ क्वेरी में नहीं व्यक्त करने के लिए कैसे? एंड्रॉइड में स्क्रॉलबार रंग बदलें मैं नेस्टेड / रिकर्सिव डिक्शनरी और लिस्ट में deserialize करने के लिए JSON.NET का उपयोग कैसे करूं? स्क्रॉलव्यू स्क्रॉल के अंदर एंड्रॉइड वेबव्यू केवल स्क्रॉलएव्यू पायथन में फ़ाइल आउटल बंद होने के बाद स्वचालित रूप से बंद हो जाता है? एक HTML इनपुट के मूल्य को प्राप्त करने के लिए सेलेनियम वेब ड्रायवर का उपयोग करना हैश कोड () को ओवरराइड करने वाले ऑब्जेक्ट का अद्वितीय आईडी कैसे प्राप्त करें? आपकी पसंदीदा PHP तैनाती रणनीति क्या है?

क्यों बेबले पुनर्लेखन फ़ंक्शन कॉल को (0, एफएन) (…) पर कॉल करता है?

जैसे एक इनपुट फाइल को देखते हुए

import { a } from 'b'; function x () { a() } 

बैबेल इसे संकलन करेगा

 'use strict'; var _b = require('b'); function x() { (0, _b.a)(); } 

लेकिन जब ढीला मोड में संकलित किया जाता है तो फ़ंक्शन कॉल आउटपुट _b.a(); रूप में _b.a();

मैंने कुछ शोध किया है, जहां उम्मीद में कॉमा ऑपरेटर जोड़ा गया है, इसमें एक टिप्पणी समझा गया है। इसे जोड़ने के लिए जिम्मेदार कोड यहाँ है

Solutions Collecting From Web of "क्यों बेबले पुनर्लेखन फ़ंक्शन कॉल को (0, एफएन) (…) पर कॉल करता है?"

(0, _b.a)() यह सुनिश्चित करता है कि फ़ंक्शन _b.a को this सेट के साथ वैश्विक ऑब्जेक्ट (या यदि सख्त मोड सक्षम है, undefined करने के लिए) कहा जाता है। यदि आप सीधे _b.a() को कॉल करते थे, तो _b.a को this सेट को _b.a साथ बुलाया जाता है _b.a

(0, _b.a)(); के बराबर है

 0; // Ignore result var tmp = _b.a; tmp(); 

(यह , अल्पविराम ऑपरेटर है, https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comma_Operator देखें )।

अल्पविराम ऑपरेटर अपने प्रत्येक ऑपरेंड्स का मूल्यांकन करता है (बाएं से दाएं) और पिछले ऑपरेंड के मूल्य को वापस देता है।

 console.log((1, 2)); // Returns 2 in console console.log((a = b = 3, c = 4)); // Returns 4 in console 

तो, एक उदाहरण देखें:

 var a = { foo: function() { console.log(this === window); } }; a.foo(); // Returns 'false' in console (0, a.foo)(); // Returns 'true' in console 

अब, foo पद्धति में, this एक के बराबर a (क्योंकि foo एक से जुड़ा हुआ a ) इसलिए यदि आप a.foo( ) सीधे कॉल a.foo( हैं, तो यह कंसोल में false लॉग करेगा।

लेकिन, अगर आप कॉल (0, a.foo)() अभिव्यक्ति (0, a.foo) अपने प्रत्येक (0, a.foo) (बाएं से दाएं) का मूल्यांकन करेगी और पिछले ऑपरेंड के मूल्य को वापस देगा। दूसरे शब्दों में, (0, a.foo) बराबर है

 function() { console.log(this === window); } 

चूंकि यह फ़ंक्शन अब किसी चीज़ से जुड़ा नहीं है, इसलिए यह वैश्विक ऑब्जेक्ट window । यही कारण है कि जब यह कॉल (0, a.foo)()