जावास्क्रिप्ट में उत्थापन === संकलन?


9

मैं हाल ही में एक नौकरी के साक्षात्कार में एक दिलचस्प परिप्रेक्ष्य में आया था।

जावास्क्रिप्ट में उत्थापन स्क्रिप्ट के शीर्ष पर परिवर्तनशील घोषणाओं और फ़ंक्शन घोषणा को आगे बढ़ाने के बारे में है। क्या हम इस चरण को संकलन कह सकते हैं ?

मैं इस तथ्य के बारे में अवगत हूं कि जावास्क्रिप्ट इंटरप्रेटर की इनपुट स्क्रिप्ट पर 2 पास हैं जहां पहली पास में यह उत्थापन करता है और दूसरा पास वास्तव में स्क्रिप्ट को निष्पादित करता है। यह जानते हुए कि जावास्क्रिप्ट एक व्याख्या की गई भाषा है, इस सवाल ने मुझे थोड़ा भ्रमित कर दिया।

जवाबों:


18

नहीं, उत्थापन संकलन नहीं है।

उत्थापन एक अवधारणा है जो डेवलपर्स द्वारा यह समझाने के लिए बनाया गया था कि संकलन के दौरान क्या होता है जब चर और फ़ंक्शन घोषणाएं उनके युक्त दायरे के शीर्ष पर स्थानांतरित हो जाती हैं।

संकलन तब होता है जब आपका जावास्क्रिप्ट कोड कुछ अन्य प्रतिनिधित्व (आमतौर पर किसी प्रकार का निष्पादन योग्य कोड) में बदल जाता है, जिसे अभी या बाद में निष्पादित किया जाना है। क्रोम का V8 जावास्क्रिप्ट इंजन वास्तव में दो संकलक है; एक त्वरित और गंदा निष्पादन योग्य कोड बनाने के लिए, दूसरा बाद में अनुकूलित कोड बनाने के लिए।

प्रोग्रामिंग भाषाओं को "संकलित" या "व्याख्या की गई" भाषा के रूप में परिभाषित नहीं किया गया है। बल्कि, भाषाओं की आवश्यकतानुसार व्याख्या या संकलन किया जाता है।


जावास्क्रिप्ट में आगे पढ़ना
कैसे V8 इंजन काम करता है


1
व्याख्या की गई भाषाओं पर विकिपीडिया लेख "व्याख्यायित" बनाम "संकलित" भेद पर भी सहायक है: en.wikipedia.org/wiki/Interpreted_language

अगर मैं इसे सही ढंग से समझ रहा हूं, तो होर्डिंग स्क्रिप्ट को पठनीय कोड में परिवर्तित नहीं करता है, इसलिए यह संकलन नहीं है । क्या मैं सही हू? :)
राहुल देसाई

मेरे उत्तर के दूसरे पैराग्राफ को फिर से पढ़ें।
रॉबर्ट हार्वे

1
इस विषय के बारे में उस साक्षात्कारकर्ता के साथ मेरी हालिया बातचीत में, उन्होंने मुझे फ्रंटएंडमास्टर्स डॉट कॉम पर एडवांस्ड जेएस कोर्स का संदर्भ दिया, जहां काइल सिम्पसन बताते हैं कि यह संकलन है, अगर हम इसकी तुलना बैश स्क्रिप्टिंग से करते हैं, उदाहरण के लिए, यह पता नहीं क्या लाइन # 4 पर उम्मीद है, जबकि यह लाइन # 3 पर है। हालांकि, जेएस संकलक के मामले में, यह देखा है कि उत्थापन पास के दौरान लाइन # 4 पर क्या है। इसका सिर्फ इतना है कि यह अन्य भाषाओं के विपरीत बाइनरी कोड में परिवर्तित नहीं होता है। जावास्क्रिप्ट को हर बार संकलित किया जाता है।
राहुल देसाई
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.