जावास्क्रिप्ट क्या है, वास्तव में?


95

यह सब तब शुरू हुआ जब मैं जावास्क्रिप्ट के लिए अपने वेबपेज का परीक्षण करने के लिए एक रास्ते की तलाश कर रहा था जैसे डब्ल्यू 3 सी एचटीएमएल वैलिडेटर । मुझे अभी तक एक भी नहीं मिला है। तो मुझे बताएं कि क्या आप किसी के बारे में जानते हैं ...

  1. मैंने आधिकारिक जावास्क्रिप्ट पृष्ठ की तलाश की और ECMA स्क्रिप्ट ढूंढी । इन लोगों ने एक स्क्रिप्टिंग भाषा को मानकीकृत किया है (मुझे अब इसे जावास्क्रिप्ट कहने का मन नहीं है!) और इसे ईसीएमए -262 ( विकिपीडिया ) कहा जाता है । उनका नवीनतम कार्य संस्करण 5.1 है

  2. JavaScript को Mozilla Corporation द्वारा विकसित किया गया था और उनका अंतिम स्थिर संस्करण 1.8.5 है (इसे देखें ) जो ECMA के संस्करण 5.1 पर आधारित है

  3. विकिपीडिया पृष्ठ जुड़ा हुआ बोलियों का उल्लेख है। मोज़िला की जावास्क्रिप्ट 1.8.5 को JScript 9 (IE) और जावास्क्रिप्ट (Chrome का V8 [ विकी ]) और कई अन्य लोगों के साथ एक बोली के रूप में सूचीबद्ध किया गया है । क्या मैं यह समझ सकता हूं कि जावास्क्रिप्ट 1.8.5 ECMA-262 का एक व्युत्पन्न है और स्पाइडरमोंकी [ विकी ] एक इंजन है जो इसे चलाता है? और क्रोम की अपनी बोली है और V8 इंजन वह प्रोग्राम है जो इसे चलाता है?

ECMA-262 पर आधारित इन सभी बोलियों के साथ, जो मैं अब समझ नहीं पा रहा हूं वह है " जावास्क्रिप्ट क्या है "? क्या वास्तव में कोई क्रॉस ब्राउज़र स्क्रिप्टिंग भाषाएँ हैं? क्या विभिन्न कार्यान्वयनकर्ता एक साथ बोली क्रॉस संगतता पर सहमत होते हैं? क्या यह प्रयास ECMA है?


10
आप एक्शनस्क्रिप्ट का उल्लेख करना भूल गए, जो कि एक ईसीएमए बोली है, जिसे आप जावास्क्रिप्ट कह सकते हैं, उससे कोई लेना-देना नहीं है।
डेवग्रैंडम

4
अनुरूपता के लिए इतना नहीं (जैसा कि आप पहले ही उजागर कर चुके हैं), लेकिन jslint कोड की जाँच के लिए बहुत अच्छा है।
SomeKittens

2
@ मंदराउचिहा - मैं सहमत हूं "बस jQuery का उपयोग करें। सब कुछ ठीक होगा।" ठीक नहीं होगा। यही वजह है कि मैंने इस पर शोध शुरू किया। मेरी साइट bharath.lohray.com क्रोम और फ़ायरफ़ॉक्स पर अच्छी तरह से काम करती है और W3C सत्यापनकर्ता किसी भी त्रुटि को उत्पन्न नहीं करता है, लेकिन यह नवीनतम IE पर बड़ा समय चूसता है! इसके अलावा, मुझे जितना भी लोगों का विचार anybrowser.org/campaign पर पसंद है , मैं सही मायने में ब्राउज़र पार नहीं कर सकता!
भगवान लोह।

7
आपके पृष्ठ के बारे में, स्क्रॉलिंग बहुत कष्टप्रद है और शीर्ष पर है। बस IMO। और "भगवान" शीर्षक नरक के रूप में धूमधाम लगता है, भले ही आप वास्तव में एक भगवान हों।
NullUserException

11
यह अनावश्यक रूप से आकर्षक है। आप एसई पर ऊपर और नीचे स्लाइडिंग पोस्ट नहीं देखते हैं। यदि यह एक पेशेवर दिखने वाली वेबसाइट है और आप अभी भी बदलाव चाहते हैं, तो फीका-इन / फीका-आउट जैसे कुछ और विचार-विमर्श का उपयोग करें।
NullUserException

जवाबों:


96

बहुत सारी परिपक्व भाषाओं को एक विनिर्देश द्वारा परिभाषित किया गया है, और संकलक या दुभाषिए उस विनिर्देश में परिभाषित मानक का पालन करने का प्रयास करते हैं। लेकिन बहुत कम ही वे सफल होते हैं, जब तक कि मानक भाषा के लेखक द्वारा परिभाषित नहीं किया जाता है।

आप C ++ 2003 मानक , C # 4 विनिर्देश , जावा 7 विनिर्देश और कई और अधिक ऑनलाइन पा सकते हैं। इनमें से कई में ECMA या ISO मानकीकरण संख्या है। ये केवल ऐसे संगठन हैं जिनके साथ आप एक मानक पंजीकृत कर सकते हैं और इसे अधिक आधिकारिक बना सकते हैं।

रूबी ने ऐतिहासिक रूप से चीजों को थोड़ा अलग तरीके से किया है, जिसमें विनिर्देशन के रूप में परीक्षणों का एक निष्पादन योग्य सेट है । इसलिए, यदि आप एक दुभाषिया लिखना चाहते हैं और इसे मानक रूबी कहते हैं, तो आपको बस एक दुभाषिया बनाना होगा जो उन सभी परीक्षणों से गुजरे। लेकिन रूबी के अंततः एक अधिक औपचारिक विनिर्देश बनने की संभावना है

जावास्क्रिप्ट अलग नहीं है, संभवतः इसके अलावा जिस तरह से यह विकसित हुआ है।

जावास्क्रिप्ट को सबसे पहले नेटस्केप द्वारा बनाया गया था। उन्होंने इसे लाइवस्क्रिप्ट कहा, लेकिन यह जावा के समान दिख रहा था और उन्होंने सूर्य के साथ नाम पर एक सौदे में कटौती की, जिससे नेटस्केप और जावा दोनों के विपणन में लाभ हुआ। Microsoft के पास VBScript था और (संभवतः अनुमान लगाने के लिए खो जाने के कारण) मूल रूप से जावास्क्रिप्ट कॉपी किया गया था, लेकिन नाम सूर्य के स्वामित्व में था, इसलिए उन्होंने इसे संक्षेप में JScript कहा।

लेकिन JScript, वाक्य रचना में जावास्क्रिप्ट के समान होने के बावजूद, COM का बहुत उपयोग किया है - उदाहरण के लिए, IE5 और 6 एक XMLHttpRequest ऑब्जेक्ट का उपयोग करके तुरंत new ActiveXObject("Microsoft.XMLHTTP");

और इसलिए, जावास्क्रिप्ट के समान, समान, लेकिन अलग-अलग "बोलियों" का भी जन्म हुआ। समय के साथ, IE की तुलना में कम बाजार में हिस्सेदारी वाले ब्राउज़रों के विभिन्न समूहों ने भाषा को मानकीकृत करने की कोशिश की है, और वर्षों तक Microsoft ने विरोध किया। V8 तक।

V8 तेज था। इसने एक नया बाजार मानक तय किया। इसने बाकी सभी चीजों को खराब कर दिया।

और, Microsoft के खिलाफ विभिन्न विरोधी मामलों के माध्यम से, IE बाजार में हिस्सेदारी खो रहा था। मानकीकरण का समर्थन करने के लिए अचानक यह Microsoft के हित में था। हम अभी तक वहां नहीं हैं, लेकिन यह सही रास्ते पर है।

इस बीच, V8 खुला-स्रोत था, जिसने लोगों को एक तेज जावास्क्रिप्ट पार्सर जैसे Node.JS के लिए नए उपयोग शुरू करने की अनुमति दी ।

लेकिन, अपने सवाल पर वापस जाने के लिए: जावास्क्रिप्ट क्या है? यह ECMAScript के लिए सामान्य (और मूल) नाम है, आमतौर पर एक प्रोटोटाइप भाषा के लिए एक विनिर्देश है , लेकिन विशेष रूप से उपयोग नहीं किया जाता है, जो एक ब्रोसवर् में डोमेन ऑब्जेक्ट मॉडल को नेविगेट और हेरफेर करने के लिए उपयोग किया जाता है।

ECMA-262 केवल मानक परिभाषा है, जैसे ECMA-334 C # के लिए मानक परिभाषा है। ईसीएमएस्क्रिप्ट केवल एक ही नाम था, जिसे सभी इच्छुक पार्टियां '99 में वापस ले सकती थीं, जब ईसीएमए -262 लिखा गया था।


7
अगर मैं आपके उत्तर को एक से अधिक बार बढ़ा सकता हूं, तो मैंने ऐसा किया होगा :-) इससे कुछ चीजें और अधिक स्पष्ट हो जाती हैं। C कंपाइलर सादृश्य स्थिति को बस थोड़ा समझ में आता है :-) सिवाय जावास्क्रिप्ट के बाइनरी के लिए संकलित नहीं किया जाता है और अंतिम उपयोगकर्ता गैर-अर्ध-कार्यात्मक स्क्रिप्ट देखते हैं। तो क्या मैं यह समझ सकता हूं कि मैं एक मानक के लिए पेज नहीं बना सकता हूं और उम्मीद है कि यह अभी तक सभी ब्राउज़रों पर काम करेगा? (अभी तक ऑपरेटिव शब्द है)।
भगवान लोह।

1
@LordLoh। वह सही है। लेकिन आप jQuery और प्रोटोटाइप जैसे पुस्तकालयों को अपने लिए मतभेदों को दूर करने की अनुमति दे सकते हैं।
पीडीआर

यह पोस्ट और अनुसंधान तब शुरू हुआ जब jQuery का एनीमेशन IE9 पर काम नहीं करता था और मैंने anybrowser.org अभियान के विचार को झूठ बोला था और मुझे उम्मीद थी कि मैं एक मानक पर टिक सकता हूं। HTML5 / CSS3 / JS। जेएस मेरे बोनट में बग के रूप में समाप्त हो गया।
भगवान लोह।

1
@LordLoh। मुझे यकीन नहीं होगा कि यह jQuery की गलती है। बस एक त्वरित नज़र आपके HTML (उदाहरण के लिए गायब उद्धरण) के साथ समस्याओं को दिखाती है और जब आप अपनी जावास्क्रिप्ट को इस तरह से कम करते हैं, तो बहुत ही सटीक परिणाम हो सकते हैं यदि आप बहुत सटीक नहीं हैं। मुझे याद है कि बहुत पहले मुझे एक अर्धविराम याद आया था और यह केवल एक प्रमुख ब्राउज़र में संपीड़न के बाद विफल हो गया था। jQuery बहुत स्थिर है और IE9 के साथ अच्छी तरह से काम करना चाहिए।
पीडीआर

5
@LordLoh। कंसोल.लॉग आपकी समस्या है। यह तब तक काम नहीं करता जब तक आप डेवलपर टूलबार नहीं खोलते (और इस प्रकार ऑब्जेक्ट "कंसोल" बनाते हैं)।
पीडीआर

23

जावास्क्रिप्ट ईसीएमएस्क्रिप्ट का आमतौर पर उपयोग किया जाने वाला कार्यान्वयन है। यह योजना परिवार के लिए एक समान स्थिति है । स्कीम में, आपके पास अत्यधिक औपचारिक विनिर्देश हैं। वर्तमान संस्करण R6RS है, हालांकि R5RS इस पद के रूप में अधिक सामान्यतः लागू मानक है। योजना की आयु और सामान्य दर्शन के कारण कार्यान्वयन ECMAScript की तुलना में अधिक बिखरे हुए हैं।

मोज़िला के फ़ायरफ़ॉक्स और गूगल के क्रोम दोनों के बाजार हिस्सेदारी में विस्फोटक वृद्धि के कारण जावास्क्रिप्ट अब सामान्य रूप से होता है। इसने मूल रूप से नेटस्केप नेविगेटर के साथ एक पायदान हासिल किया, जो अंततः मोज़िला ब्राउज़र में बदल गया और फिर फ़ायरफ़ॉक्स (और आइसविसेल में यदि आप स्कीम भीड़ के साथ चलते हैं)।

अब यहाँ है जहाँ यह थोड़ा पासा हो जाता है। जावास्क्रिप्ट का अधिकांश प्रदर्शन इसे चलाने वाले पार्सर और इंजन से आता है। यह वह जगह है जहाँ ब्राउज़रों के बीच वास्तविक अंतर स्पष्ट हो जाते हैं। Spidermonkey जावास्क्रिप्ट को V8 की तुलना में अलग तरीके से चलाता है। जावास्क्रिप्ट में अभी भी पूरी तरह से सामान्य पुस्तकालय की कमी की तरह खुरदरे धब्बे हैं, हालांकि इस पर काम किया जा रहा है।

इसलिए यदि जावास्क्रिप्ट C ++ था, तो ECMAScript C ++ 11 होगा, जिसमें UNIX और G ++, "मानक" के सबसे करीब होंगे, जबकि .NET और ऑब्जेक्टिव C ++ के लिए C ++, जिस तरह से ECMAScript होता है, उसी तरह से आगे रहते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.