तो क्या मैं इसे ले सकता हूं कि व्याख्या की गई भाग भाषा विनिर्देश में एक आवश्यकता है, या यह कहना भ्रामक है कि भाषा एक व्याख्या की गई भाषा है जब भाषा और उसके कई कार्यान्वयन के बीच अंतर का सम्मान किया जाता है?
EcmaScript भाषा geeks अक्सर EcmaScript के कार्यान्वयन को संदर्भित करने के लिए "ES दुभाषिया" शब्द का उपयोग करते हैं, लेकिन कल्पना उस शब्द का उपयोग नहीं करती है। भाषा सिंहावलोकन विशेष रूप से दुभाषिया-अज्ञेयवाद संदर्भ में भाषा का वर्णन करता है:
ECMAScript ऑब्जेक्ट-आधारित है: मूल भाषा और होस्ट सुविधाएं ऑब्जेक्ट द्वारा प्रदान की जाती हैं, और एक ECMAScript प्रोग्राम संचार वस्तुओं का एक समूह है।
इसलिए EcmaScript एक "मेजबान वातावरण" मानता है, जिसे ऑब्जेक्ट परिभाषाओं के प्रदाता के रूप में परिभाषित किया जाता है, जिसमें उन सभी को शामिल किया गया है जो I / O या बाहरी दुनिया के किसी अन्य लिंक की अनुमति देते हैं, लेकिन उन्हें दुभाषिया की आवश्यकता नहीं है।
भाषा में बयानों और अभिव्यक्तियों के शब्दार्थ को पूरा करने वाले विनिर्देश के संदर्भ में परिभाषित किया गया है जो एक दुभाषिया में तुच्छ रूप से लागू किया गया है, लेकिन विनिर्देश को इसकी आवश्यकता नहीं है।
8.9 पूर्णता निर्दिष्ट प्रकार
समापन प्रकार बयान के व्यवहार की व्याख्या करने के लिए प्रयोग किया जाता है ( break
, continue
, return
और throw
) है कि नियंत्रण से nonlocal स्थानान्तरण प्रदर्शन करते हैं। समापन प्रकार के मान प्रपत्र (की ट्रिपल कर रहे हैं प्रकार , मूल्य , लक्ष्य ), जहां प्रकार से एक है सामान्य , तोड़ने , जारी रखने के लिए , वापसी , या फेंक , मूल्य किसी भी मूल्य या ECMAScript भाषा है खाली , और लक्ष्य किसी भी ECMAScript पहचानकर्ता है या खाली ।
शब्द "अचानक पूरा होने" से तात्पर्य सामान्य के अलावा किसी अन्य प्रकार से पूर्ण होने से है ।
नियंत्रण के गैर-स्थानीय हस्तांतरण को देशी या बाइट-कोड संकलन की अनुमति देने वाले जंप के साथ निर्देशों के सरणियों में परिवर्तित किया जा सकता है।
"एक्मास्क्रिप्ट इंजन" समान विचार व्यक्त करने का एक बेहतर तरीका हो सकता है।
स्पष्ट रूप से जावास्क्रिप्ट के लिए कोई स्थिर संकलक नहीं हैं
यह सच नहीं है। V8 "दुभाषिया" मूल कोड के आंतरिक रूप से संकलित करता है, राइनो आंतरिक रूप से जावा बाइटकोड को आंतरिक रूप से संकलित करता है, और विभिन्न मोज़िला दुभाषियों ({ट्रेस, स्पाइडर, जगर} बंदर) एक जेआईटी संकलक का उपयोग करते हैं।
V8 :
V8 जावास्क्रिप्ट को देशी मशीन कोड पर संकलित करने से पहले प्रदर्शन को बढ़ाता है, या फिर बायटेकोड को निष्पादित करता है या इसकी व्याख्या करता है।
राइनो :
public final void setOptimizationLevel(int optimizationLevel)
वर्तमान अनुकूलन स्तर सेट करें। अनुकूलन स्तर -1 और 9 के बीच पूर्णांक होने की उम्मीद है। उपयोग किया गया। 9 के माध्यम से स्तर 0 से संकेत मिलता है कि वर्ग फाइलें उत्पन्न हो सकती हैं। उच्च अनुकूलन स्तर रनटाइम प्रदर्शन के लिए संकलन समय प्रदर्शन को बंद कर देते हैं। ऑप्टिमाइज़र स्तर -1 से अधिक सेट नहीं किया जा सकता है यदि ऑप्टिमाइज़र पैकेज रन टाइम पर मौजूद नहीं है।
TraceMonkey :
TraceMonkey में मोज़िला के जावास्क्रिप्ट® इंजन के लिए मूल on कोड संकलन जुड़ता है (जिसे “स्पाइडरमोनी” के रूप में जाना जाता है)। यह यूसी इरविन में विकसित एक तकनीक पर आधारित है जिसे "ट्रेस ट्री" कहा जाता है, और टैमरीन ट्रेसिंग प्रोजेक्ट के साथ साझा किए गए कोड और विचारों पर निर्माण होता है। शुद्ध परिणाम ब्राउज़र क्रोम और वेब। पृष्ठ सामग्री दोनों में एक बड़े पैमाने पर गति वृद्धि है।