2010-08-09 36 views
6

मुझे यह जानने में दिलचस्पी है कि जावास्क्रिप्ट दुभाषिया (इंजन यदि आपको पसंद है) कैसे काम करता है। मुझे पता है कि जावास्क्रिप्ट संकलित नहीं है। मैंने ईसीएमए विनिर्देश को देखा है, लेकिन यह स्पष्ट नहीं करता कि वास्तविक इंजन कैसे काम करता है।जावास्क्रिप्ट दुभाषिया/इंजन कैसे काम करते हैं?

मुख्य कारण यह है कि मैं यह क्यों पूछ रहा हूं क्योंकि मैं समझना चाहता हूं कि IE7 IE8 या फ़ायरफ़ॉक्स 3.5+ के लिए थोड़ा अलग तरीके से क्यों व्यवहार करता है।

मुझे संदेह है कि कुछ फ़ंक्शन कॉल एक अलग क्रम में संभाले जाते हैं, लेकिन मैं निश्चित रूप से जानना चाहता हूं।

मैंने जावास्क्रिप्ट के साथ जावास्क्रिप्ट अनुकूलन पर Google वार्तालापों द्वारा कुछ वीडियो भी देखे हैं: गुड पार्ट्स वीडियो। ये संक्षेप में विषय पर छुआ।

आप

+0

ECMA विनिर्देश, कई प्रोग्रामिंग भाषा चश्मा की तरह, वाक्य रचना और भाषा, नहीं कार्यान्वयन के शब्दों का उल्लेख है। यही कारण है कि आप जावास्क्रिप्ट इंजन का "स्पष्टीकरण" नहीं देख रहे हैं। –

+0

यदि आप जो देखते हैं उसका एक उदाहरण प्रदान करते हैं तो मैं समझा सकता हूं कि अंतर क्या है और यह क्यों बदला गया। – chuckj

उत्तर

1

धन्यवाद, निम्न स्तर भाषाओं के साथ सौदा कर सकते हैं V8 या TraceMonkey के स्रोतों को देखो और उन्हें अनुसंधान। यह जावास्क्रिप्ट इंजन के आंतरिक को समझने का एक कठिन तरीका है, लेकिन यह काफी दिलचस्प है।

4

मेरे पास बिल्कुल वही समस्या है - Execution Contexts ईसीएमए स्पेक में। कुछ अस्पष्ट प्रदान करता है! अंतर्दृष्टि। हालांकि Idiosyncrasies भी एक मंच के संस्करणों के बीच प्रचलित हैं।

आम तौर पर, ऑटोमाटा, रिकर्सिव फ़ंक्शन थ्योरी, औपचारिक भाषा सिद्धांत और कंपाइलर डिज़ाइन पर विषय एक दुभाषिया को "समझने" के लिए ठोस पृष्ठभूमि प्रदान करते हैं।

अमूर्तता में, यदि अर्थशास्त्र पूरी तरह से परिभाषित किया गया है, बिना "असंबद्धता" की आवश्यकता के, तो औपचारिक कार्य परिणाम कार्यान्वयन के बावजूद समान होंगे। अभ्यास में, बहुत सारे wriggle कमरे हैं, जैसा कि extto() के रूप में अतिरिक्त द्वारा देखा गया है, कि एक इंजन हो सकता है और दूसरा नहीं।

stackoverflow रेफरी: What are Gecko's operational semantics?