JavaScript และ ECMAScript แตกต่างกันอย่างไร

ฉันได้ลองใช้ "ความแตกต่างระหว่าง JavaScript และ ECMAScript" แล้ว

ฉันลงเอยด้วยการต้องลุยผ่านทะเลแห่งผลลัพธ์ที่คลุมเครือและดูเหมือนขัดแย้งกัน:

“ ECMAScript เป็นมาตรฐาน”

“ JavaScript เป็นมาตรฐาน”

“ ECMAScript เป็นข้อกำหนด”

“ JavaScript เป็นการปรับใช้มาตรฐาน ECMAScript”

“ ECMAScript คือ JavaScript มาตรฐาน”

“ ECMAScript เป็นภาษาหนึ่ง”

“ JavaScript เป็นภาษาถิ่นของ ECMAScript”

“ ECMAScript คือ JavaScript”

ฉันกลั้นความอยากที่จะร้องไห้และตัดสินใจที่จะทำวิจัยบางอย่างที่เจ็บปวด แต่ได้ผล

บทความนี้แสดงถึงความเข้าใจในปัจจุบันของฉันเกี่ยวกับความแตกต่างระหว่าง JavaScript และ ECMAScript เหมาะสำหรับผู้ที่คุ้นเคยกับ JavaScript แต่ต้องการความเข้าใจที่ชัดเจนยิ่งขึ้นเกี่ยวกับความสัมพันธ์กับ ECMAScript เว็บเบราว์เซอร์ Babel และอื่น ๆ นอกจากนี้คุณยังจะได้เรียนรู้เกี่ยวกับภาษาสคริปต์เอ็นจิ้น JavaScript และเวลาทำงานของ JavaScript เพื่อการวัดผลที่ดี

ดังนั้นได้สูบ

อภิธานศัพท์ JavaScript / ECMAScript

ด้านล่างนี้คือรายการคำจำกัดความที่ออกแบบโดยเน้นที่ความสอดคล้องและชัดเจน คำจำกัดความยังไม่สมบูรณ์ 100% พวกเขาสร้างขึ้นในลักษณะที่ให้ความเข้าใจระดับสูงเกี่ยวกับการเชื่อมต่อและความสัมพันธ์ระหว่าง JavaScript และ ECMAScript

มาเริ่มกันเลยดีกว่า

Ecma International

องค์กรที่สร้างมาตรฐานสำหรับเทคโนโลยี

เพื่อแสดงตัวอย่างของ "มาตรฐาน" (แม้ว่า Ecma จะไม่ได้สร้างขึ้นก็ตาม) ให้นึกถึงคีย์บอร์ดทั้งหมดที่คุณเคยใช้ ส่วนใหญ่มีตัวอักษรในลำดับเดียวกันและเว้นวรรคแป้น Enter แป้นลูกศรที่มีตัวเลขแสดงเป็นแถวที่ด้านบนหรือไม่ เนื่องจากผู้ผลิตแป้นพิมพ์ส่วนใหญ่ใช้การออกแบบแป้นพิมพ์ตามมาตรฐานเค้าโครง QWERTY

ECMA-262

นี่คือมาตรฐานที่เผยแพร่โดย Ecma International ประกอบด้วยข้อกำหนดสำหรับภาษาสคริปต์สำหรับวัตถุประสงค์ทั่วไป

ECMA-262 เป็นมาตรฐานเหมือนกับ QWERTY แต่แทนที่จะเป็นตัวแทนของข้อกำหนดรูปแบบแป้นพิมพ์จะแสดงข้อกำหนดภาษาสคริปต์ที่เรียกว่า ECMAScript

คิดว่า ECMA-262 เป็นหมายเลขอ้างอิงของ ECMAScript

ภาษาสคริปต์

ภาษาโปรแกรมที่ออกแบบมาโดยเฉพาะสำหรับการทำงานกับเอนทิตีหรือระบบที่มีอยู่

สำหรับแนวคิดทั่วไปเกี่ยวกับสิ่งที่ทำให้ภาษาโปรแกรมเป็นภาษาสคริปต์ให้พิจารณาคำสั่ง“ เดิน”“ วิ่ง” และ“ กระโดด” การกระทำเหล่านี้จำเป็นต้องมีบางอย่างในการดำเนินการอาจเป็นคนสุนัขหรือตัวละครในวิดีโอเกม หากไม่มีนักแสดงทำตามคำสั่งเหล่านี้การ“ เดิน”“ วิ่ง” และ“ กระโดด” ก็ไม่สมเหตุสมผล ชุดการดำเนินการนี้คล้ายคลึงกับภาษาสคริปต์ที่เน้นการจัดการกับเอนทิตีภายนอก

ECMAScript

ข้อกำหนดที่กำหนดไว้ใน ECMA-262 สำหรับการสร้างภาษาสคริปต์สำหรับวัตถุประสงค์ทั่วไป

คำพ้องความหมาย:ข้อกำหนด ECMAScript

แม้ว่า ECMA-262 เป็นชื่อของมาตรฐาน แต่ก็แสดงถึงข้อกำหนดภาษาสคริปต์ ECMAScript

ECMAScript ให้กฎรายละเอียดและแนวทางปฏิบัติที่ภาษาสคริปต์ต้องปฏิบัติเพื่อให้ถือว่าสอดคล้องกับ ECMAScript

JavaScript

ภาษาสคริปต์สำหรับวัตถุประสงค์ทั่วไปที่สอดคล้องกับข้อกำหนด ECMAScript

JavaScript เป็นภาษารสกาแฟที่ฉันชอบเขียนโปรแกรม ECMAScript เป็นข้อกำหนดที่ยึดตาม เมื่ออ่านข้อกำหนด ECMAScript คุณจะได้เรียนรู้วิธีการสร้างภาษาสคริปต์ เมื่ออ่านเอกสาร JavaScript คุณจะได้เรียนรู้วิธีใช้ภาษาสคริปต์

เมื่อผู้คนเรียก JavaScript ว่า“ ภาษาถิ่นของภาษา ECMAScript” พวกเขาหมายถึงมันในความหมายเดียวกับเมื่อพูดถึงภาษาอังกฤษฝรั่งเศสหรือจีน ภาษาถิ่นได้มาจากศัพท์และไวยากรณ์ส่วนใหญ่จากภาษาแม่ แต่เบี่ยงเบนไปมากพอที่จะได้รับความแตกต่าง

JavaScript ส่วนใหญ่ใช้ข้อกำหนด ECMAScript ตามที่อธิบายไว้ใน ECMA-262 แต่มีความแตกต่างเล็กน้อย Mozilla สรุปคุณลักษณะภาษาที่ไม่ใช่ ECMAScript ของ JavaScript ที่นี่:

เครื่องมือ JavaScript

โปรแกรมหรือล่ามที่เข้าใจและรันโค้ด JavaScript

คำพ้องความหมาย : ล่าม JavaScript, การใช้งาน JavaScript

เอ็นจิ้น JavaScript มักพบในเว็บเบราว์เซอร์รวมถึง V8 ใน Chrome SpiderMonkey ใน Firefox และ Chakra ใน Edge เอ็นจิ้นแต่ละตัวเปรียบเสมือนโมดูลภาษาสำหรับแอปพลิเคชันทำให้สามารถรองรับภาษา JavaScript บางส่วนได้

เครื่องมือ JavaScript สำหรับเบราว์เซอร์เปรียบเสมือนการเข้าใจภาษาของบุคคลหากเรากลับไปดูตัวอย่างของการกระทำ“ เดิน”“ วิ่ง”“ กระโดด” เครื่องมือ JavaScript เป็นส่วนหนึ่งของ“ เอนทิตี” ที่เข้าใจความหมายของการกระทำเหล่านี้

การเปรียบเทียบนี้ช่วยอธิบายบางสิ่งเกี่ยวกับเบราว์เซอร์:

ความแตกต่างในประสิทธิภาพของเบราว์เซอร์

คนสองคนอาจจำคำสั่ง“ กระโดด” ได้ แต่คนหนึ่งอาจตอบสนองต่อคำสั่งนั้นเร็วกว่าเพราะบุคคลนั้นสามารถเข้าใจและประมวลผลคำสั่งได้เร็วกว่าอีกคน ในทำนองเดียวกันเบราว์เซอร์สองตัวสามารถเข้าใจโค้ด JavaScript แต่เบราว์เซอร์หนึ่งทำงานได้เร็วขึ้นเนื่องจากมีการใช้เอ็นจิ้น JavaScript อย่างมีประสิทธิภาพมากขึ้น

ความแตกต่างในการรองรับเบราว์เซอร์

พิจารณาความแตกต่างที่มีอยู่ระหว่างคนที่พูดภาษาเดียวกัน แม้ว่าหลาย ๆ คนจะพูดภาษาอังกฤษได้ แต่บางคนก็อาจจะรู้คำศัพท์สำนวนและกฎไวยากรณ์ที่คนอื่นทำไม่ได้ เบราว์เซอร์ก็เหมือนกัน แม้ว่าเครื่องมือ JavaScript ของเบราว์เซอร์ทั้งหมดจะเข้าใจ JavaScript แต่บางเบราว์เซอร์ก็มีความเข้าใจภาษามากกว่าคนอื่น ๆ มีความแตกต่างในวิธีที่เบราว์เซอร์รองรับภาษา

ในส่วนของการรองรับเบราว์เซอร์ผู้คนมักจะพูดถึง“ ความเข้ากันได้ของ ECMAScript” มากกว่า“ ความเข้ากันได้ของ JavaScript” แม้ว่าเอ็นจิ้น JavaScript จะแยกวิเคราะห์และดำเนินการ ... สิ่งนี้อาจทำให้สับสนเล็กน้อย แต่มีคำอธิบาย

ถ้าคุณจะจำ ECMAScript เป็นข้อกำหนดสำหรับสิ่งที่ภาษาสคริปต์อาจมีลักษณะเหมือน การเผยแพร่ ECMAScript รุ่นใหม่ไม่ได้หมายความว่าเครื่องมือ JavaScript ทั้งหมดที่มีอยู่จะมีคุณลักษณะใหม่เหล่านั้น ขึ้นอยู่กับกลุ่มหรือองค์กรที่รับผิดชอบเอ็นจิ้น JavaScript ที่จะต้องอัปเดตเกี่ยวกับข้อกำหนด ECMAScript ล่าสุดและนำการเปลี่ยนแปลงไปใช้

ดังนั้นนักพัฒนาจึงมักจะถามคำถามเช่น“ เบราว์เซอร์นี้รองรับ ECMAScript เวอร์ชันใด” หรือ“ คุณสมบัติ ECMAScript ใดที่เบราว์เซอร์นี้รองรับ” พวกเขาต้องการทราบว่า Google, Mozilla และ Microsoft ได้อัปเดตเอ็นจิ้น JavaScript ของเบราว์เซอร์หรือไม่เช่น V8, SpiderMonkey และ Chakra ตามลำดับพร้อมคุณสมบัติที่อธิบายไว้ใน ECMAScript ล่าสุด

ตารางความเข้ากันได้ของ ECMAScript เป็นแหล่งข้อมูลที่ดีสำหรับการตอบคำถามเหล่านั้น

หาก ECMAScript รุ่นใหม่ออกมาเอ็นจิ้น JavaScript จะไม่รวมการอัปเดตทั้งหมดในคราวเดียว พวกเขารวมคุณสมบัติ ECMAScript ใหม่เพิ่มขึ้นตามที่เห็นในข้อความที่ตัดตอนมานี้จากการเปลี่ยนแปลง JavaScript ของ Firefox:

รันไทม์ JavaScript

สภาพแวดล้อมที่โค้ด JavaScript รันและตีความโดยเอ็นจิ้น JavaScript รันไทม์จัดเตรียมอ็อบเจ็กต์โฮสต์ที่ JavaScript สามารถทำงานและทำงานด้วย

คำพ้องความหมาย:สภาพแวดล้อมโฮสต์

รันไทม์ JavaScript คือ "เอนทิตีหรือระบบที่มีอยู่" ที่กล่าวถึงในนิยามภาษาสคริปต์ โค้ดผ่านเอ็นจิน JavaScript และเมื่อแยกวิเคราะห์และทำความเข้าใจเอนทิตีหรือระบบจะดำเนินการตามที่ตีความ สุนัขเดินคนวิ่งตัวละครวิดีโอเกมกระโดด (หรือในกรณีของภาพด้านบนซาก)

แอปพลิเคชันทำให้สามารถใช้งานสคริปต์ JavaScript ได้โดยการจัดเตรียม "โฮสต์อ็อบเจ็กต์" ที่รันไทม์ สำหรับฝั่งไคลเอ็นต์รันไทม์ JavaScript จะเป็นเว็บเบราว์เซอร์ซึ่งโฮสต์อ็อบเจ็กต์เช่นหน้าต่างและเอกสาร HTML พร้อมสำหรับการจัดการ

คุณเคยทำงานกับหน้าต่างหรือวัตถุโฮสต์เอกสารหรือไม่? วัตถุหน้าต่างและเอกสารไม่ได้เป็นส่วนหนึ่งของภาษา JavaScript หลัก พวกเขาคือ Web APIs ออบเจ็กต์ที่จัดเตรียมโดยเบราว์เซอร์ซึ่งทำหน้าที่เป็นสภาพแวดล้อมโฮสต์ของ JavaScript สำหรับฝั่งเซิร์ฟเวอร์รันไทม์ JavaScript คือ Node.js อ็อบเจ็กต์โฮสต์ที่เกี่ยวข้องกับเซิร์ฟเวอร์เช่นระบบไฟล์กระบวนการและคำร้องขอมีให้ใน Node.js

จุดที่น่าสนใจ: เวลาทำงานของ JavaScript ที่แตกต่างกันสามารถแชร์เอ็นจิ้น JavaScript เดียวกันได้ ตัวอย่างเช่น V8 เป็นเอ็นจิ้น JavaScript ที่ใช้ทั้งใน Google Chrome และ Node.js ซึ่งเป็นสองสภาพแวดล้อมที่แตกต่างกันมาก

ECMAScript 6

เป็นมาตรฐาน ECMA-262 รุ่นที่ 6 และมีการเปลี่ยนแปลงและการปรับปรุงที่สำคัญของข้อกำหนด ECMAScript

คำพ้องความหมาย : ES6, ES2015 และ ECMAScript 2015

ECMAScript ฉบับนี้เปลี่ยนชื่อจาก ES6 เป็น ES2015 เนื่องจากในปี 2015 Ecma International ตัดสินใจเปลี่ยนไปใช้ ECMAScript รุ่นประจำปี ดังนั้น Ecma International จึงเริ่มตั้งชื่อรุ่นใหม่ของข้อกำหนด ECMAScript โดยอิงตามปีที่เผยแพร่ ในระยะสั้น ES6 และ ES2015 เป็นชื่อที่แตกต่างกันสองชื่อสำหรับสิ่งเดียวกัน

Babel

Transpiler ที่สามารถแปลงรหัส ES6 เป็นรหัส ES5

นักพัฒนาสามารถใช้คุณลักษณะใหม่ ๆ ที่มาพร้อมกับ ES6 ได้ แต่อาจเกี่ยวข้องกับความเข้ากันได้ข้ามเบราว์เซอร์สำหรับเว็บแอปของตน ในขณะที่เขียนบทความนี้ Edge และ Internet Explorer ไม่รองรับคุณสมบัติจากข้อกำหนด ES6 อย่างสมบูรณ์

นักพัฒนาที่เกี่ยวข้องสามารถใช้ Babel เพื่อแปลงรหัส ES6 ของตนให้เป็นเวอร์ชันเทียบเท่าฟังก์ชันที่ใช้เฉพาะคุณสมบัติ ES5 เบราว์เซอร์หลักทั้งหมดรองรับ ES5 อย่างสมบูรณ์ดังนั้นจึงสามารถรันโค้ดได้โดยไม่มีปัญหาใด ๆ

อีกหนึ่งเรื่องน่ารู้ที่น่าสนใจ

ฉันหวังว่าคุณจะพบว่าข้อมูลเกี่ยวกับ JavaScript และ ECMAScript มีประโยชน์ ก่อนที่เราจะสรุปสิ่งต่างๆที่นี่ฉันต้องการแบ่งปันข้อมูลอีกชิ้นหนึ่งที่ต้องชี้แจงสำหรับนักพัฒนาเว็บที่มีประสบการณ์เช่นฉัน

ไก่หรือไข่

ประวัติที่น่าสับสนคือ JavaScript ถูกสร้างขึ้นในปี 2539 จากนั้นส่งไปยัง Ecma International ในปี 1997 เพื่อทำการกำหนดมาตรฐานซึ่งส่งผลให้ ECMAScript ในเวลาเดียวกันเนื่องจาก JavaScript เป็นไปตามข้อกำหนด ECMAScript JavaScript จึงเป็นตัวอย่างของการนำ ECMAScript ไปใช้งาน

นั่นทำให้เราได้รับข้อเท็จจริงที่น่าสนุกนี้: ECMAScript ใช้ JavaScript และ JavaScript ใช้ ECMAScript

ฉันรู้ว่า.

ดูเหมือนว่าคนเดินทางข้ามเวลาจะเป็นพ่อแม่ของตัวเอง - เป็นคนขี้โมโหเล็กน้อย แต่ก็สนุกดีที่จะคิด

ทุกสิ่งที่ดี

ฉันรู้ว่าเราทุกคนสนุกที่นี่ แต่นั่นเป็นข้อมูลมากมายที่จะสรุป ฉันจะใช้โอกาสนี้กล่าวอำลา

โปรดอย่าลังเลที่จะฝากคำถามความคิดเห็นข้อเสนอแนะหรือข้อกังวลด้านล่าง

ขอบคุณมากสำหรับการอ่าน!