อ่าน 6 นาที
อีซีเอ็มเอสคริปต์
ECMAScript ( / ˈ ɛ k m ə s k r ɪ p t / ; ES ) [ 1 ] เป็นมาตรฐานสำหรับ ภาษา JavaScript ซึ่งมีจุดประสงค์เพื่อให้มั่นใจถึง ความสามารถในการทำงานร่วมกัน ของ เว็บเพจ...
อีซีเอ็มเอสคริปต์
| อีซีเอ็มเอสคริปต์ | |
|---|---|
| กระบวนทัศน์ | หลายกระบวนทัศน์ : อิงตามต้นแบบ , เชิงฟังก์ชัน , เชิงคำสั่ง |
| ออกแบบโดย | เบรนดัน ไอช์ , เอคม่า อินเตอร์เนชั่นแนล |
| ปรากฏครั้งแรก | พ.ศ. 2540 |
| วินัยในการพิมพ์ | อ่อนแอพลวัต |
| เว็บไซต์ | www.ecma-international.org/publications-and-standards/standards/ecma-262/ |
| การนำไปใช้งานหลักๆ | |
| JavaScript , ActionScript , JScript , QtScript , InScript , สคริปต์ของ Google Apps | |
| ได้รับอิทธิพลจาก | |
| ตัวเอง , HyperTalk , AWK , C , CoffeeScript , Perl , Python , Java , Scheme | |
| อีเอ็มเมมาร์ค (รูปแบบไฟล์) | |
|---|---|
| นามสกุลไฟล์ | .es |
| สื่อประเภทอินเทอร์เน็ต | แอปพลิเคชัน/ecmascript |
| พัฒนาโดย | ซัน ไมโครซิสเต็มส์ , อีซีเอ็มเอ อินเตอร์เนชั่นแนล |
| การเผยแพร่ครั้งแรก | มิถุนายน พ.ศ. 2540 |
| รุ่นล่าสุด | ฉบับที่ 16 มิถุนายน 2568 |
| ประเภทของรูปแบบ | ภาษาสคริปต์ |
| เว็บไซต์ | มาตรฐาน |
ECMAScript ( / ˈ ɛ k m ə s k r ɪ p t / ; ES ) [ 1 ]เป็นมาตรฐานสำหรับ ภาษา JavaScriptซึ่งมีจุดประสงค์เพื่อให้มั่นใจถึงความสามารถในการทำงานร่วมกันของเว็บเพจในเว็บเบราว์เซอร์ต่างๆ[ a ] [ 2 ]ได้รับการกำหนดมาตรฐานโดย คณะกรรมการทางเทคนิค TC39ของEcma InternationalในเอกสารECMA-262โดยมี API i18n ("Intl") ที่ได้รับการกำหนดมาตรฐานในเอกสารECMA- 402 [ 3 ]
ECMAScript มักใช้สำหรับ การ เขียนสคริปต์ฝั่งไคลเอ็นต์บนเวิลด์ไวด์เว็บและกำลังถูกใช้มากขึ้นสำหรับ การ เขียนสคริปต์ฝั่งเซิร์ฟเวอร์และบริการโดยใช้สภาพแวดล้อมรันไทม์ เช่นNode.js [ 4 ] Deno [ 5 ]และBun [ 6 ]
มาตรฐาน ECMAScript ไม่ได้รวมถึงส่วนรับ/ส่งข้อมูล (I/O) ใดๆ เช่นการเชื่อมต่อเครือข่ายการจัดเก็บข้อมูลหรือ ส่วน กราฟิกในทางปฏิบัติ เว็บเบราว์เซอร์หรือระบบรันไทม์อื่นๆ จะมี API ของ JavaScript สำหรับการรับส่งข้อมูล (I/O)
มาตรฐาน
คณะกรรมการทางเทคนิค 39 ของ Ecma International เผยแพร่มาตรฐานหลายฉบับที่กำหนดJavaScriptซึ่งเรียกอย่างเป็นทางการว่าECMAScriptซึ่งรวมถึงไวยากรณ์ของภาษา ความหมาย ไลบรารี และเทคโนโลยีเสริมที่สนับสนุนภาษา[ 7 ] [ 8 ]รายละเอียดของมาตรฐานมีดังต่อไปนี้
ข้อกำหนดภาษา ECMAScript (ECMA-262)
กำหนดภาษา JavaScript ซึ่งเดิมเรียกว่า ECMAScript [ 9 ] ECMA-262 ระบุเฉพาะไวยากรณ์ภาษาและความหมายของอินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชันหลัก ( API ) เช่นArray, Function, และglobalThisในขณะที่การใช้งาน JavaScript ที่ถูกต้องจะเพิ่มฟังก์ชันการทำงานของตนเอง เช่นการรับ/ส่งข้อมูลและการจัดการ ระบบไฟล์
ข้อกำหนด API สำหรับการแปลภาษาของ ECMAScript (ECMA-402)
กำหนด API ของ JavaScript i18n ( Intl) และเป็นส่วนเสริมของ ECMA-262 [ 10 ]ฟังก์ชันการทำงานได้รับการคัดเลือกจาก API การทำให้เป็นสากล เช่น API ของ ไลบรารี International Components for Unicode (ICU) ของเฟรมเวิร์ก .NETหรือของแพลตฟอร์ม Java
ไวยากรณ์การแลกเปลี่ยนข้อมูล JSON (ECMA-404)
กำหนด ไวยากรณ์ JSON (JavaScript Object Notation) ซึ่งเป็น รูปแบบไฟล์มาตรฐานแบบเปิด ที่มนุษย์อ่านได้และรูปแบบการแลกเปลี่ยนข้อมูล[ 11 ]มันถูกพัฒนามาจาก JavaScript แต่เป็นรูปแบบข้อมูล ที่ไม่ขึ้นกับภาษาโปรแกรม
ข้อกำหนดรูปแบบแผนที่ซอร์สโค้ด (ECMA-426)
กำหนด รูปแบบ แผนที่ซอร์สโค้ดซึ่งใช้สำหรับการแมป ซอร์สโค้ด ที่แปลงแล้วกลับไปยังซอร์สโค้ดดั้งเดิม[ 12 ]รูปแบบแผนที่ซอร์สโค้ดดั้งเดิมถูกสร้างขึ้นโดย Joseph Schorr เพื่อใช้ใน โครงการ ย่อขนาด Closure Inspector เพื่อเปิดใช้งานการดีบักระดับซอร์สโค้ดของโค้ด JavaScript ที่ได้รับการปรับให้เหมาะสม ในปี 2024 รูปแบบแผนที่ซอร์สโค้ดได้รับการเผยแพร่เป็นมาตรฐาน Ecma
ประวัติศาสตร์
ข้อกำหนด ECMAScript เป็นข้อกำหนดมาตรฐานของภาษาสคริปต์ที่พัฒนาโดยBrendan EichจากNetscapeซึ่งเดิมชื่อ Mocha จากนั้นเปลี่ยนเป็น LiveScript และสุดท้ายคือ JavaScript [ 13 ]ในเดือนธันวาคม พ.ศ. 2538 Sun Microsystemsและ Netscape ประกาศ JavaScript ในข่าวประชาสัมพันธ์[ 14 ]ในเดือนพฤศจิกายน พ.ศ. 2539 Netscape ประกาศการประชุมของ องค์กรมาตรฐาน สากล Ecmaเพื่อพัฒนามาตรฐานของ JavaScript [ 15 ] ECMA-262 ฉบับแรกได้รับการรับรองโดยสมัชชาใหญ่ Ecma ในเดือนมิถุนายน พ.ศ. 2540 มีการเผยแพร่มาตรฐานภาษาหลายฉบับนับตั้งแต่นั้นมา ชื่อ "ECMAScript" เป็นการประนีประนอมระหว่างองค์กรที่เกี่ยวข้องกับการกำหนดมาตรฐานภาษา โดยเฉพาะ Netscape และ Microsoft ซึ่งข้อพิพาทของทั้งสององค์กรครอบงำการประชุมมาตรฐานในช่วงแรก Eich แสดงความคิดเห็นว่า "ECMAScript เป็นชื่อทางการค้าที่ไม่พึงประสงค์มาโดยตลอด ซึ่งฟังดูเหมือนโรคผิวหนัง " [ 16 ] ECMAScript ได้รับการกำหนดรูปแบบอย่างเป็นทางการผ่านความหมายเชิงปฏิบัติการโดยการทำงานที่มหาวิทยาลัยสแตนฟอร์ดและภาควิชาวิทยาการคอมพิวเตอร์อิมพีเรียลคอลเลจลอนดอนเพื่อการวิเคราะห์ความปลอดภัยและการกำหนดมาตรฐาน[ 17 ] "ECMA" ย่อมาจาก "European Computer Manufacturers Association" จนถึงปี 1994
วิวัฒนาการ
คณะกรรมการทางเทคนิคที่ 39 (TC39) ของ Ecma มีหน้าที่รับผิดชอบในการบำรุงรักษา ECMAScript [ 18 ]ข้อเสนอใหม่สำหรับภาษาจะผ่านกระบวนการเป็นขั้นๆ โดยแต่ละขั้นแสดงถึงความสมบูรณ์ของข้อกำหนดของข้อเสนอ ต้องมีการบรรลุฉันทามติภายในคณะกรรมการเพื่อผลักดันข้อเสนอไปสู่ขั้นต่อไป ข้อเสนอที่ผ่านถึงขั้นที่ 4 ซึ่งเป็นขั้นสุดท้าย จะถูกรวมไว้ในมาตรฐานเวอร์ชันถัดไป[ 19 ]นับตั้งแต่การเปิดตัวเวอร์ชัน 6 ในเดือนมิถุนายน 2015 เวอร์ชันหลักใหม่ได้รับการสรุปและเผยแพร่ทุกเดือนมิถุนายน[ 20 ]
คุณสมบัติ
ภาษา ECMAScript ประกอบด้วยคุณสมบัติเชิงโครงสร้างเชิงพลวัตเชิงฟังก์ชันและเชิงต้นแบบ[ 21 ]
บังคับและมีโครงสร้าง
ECMAScript JavaScript รองรับ การเขียนโปรแกรมแบบโครงสร้างสไตล์ Cก่อนหน้านี้ JavaScript รองรับเฉพาะการกำหนดขอบเขตฟังก์ชันโดยใช้คำหลัก `function` varเท่านั้น แต่ ECMAScript 2015 ได้เพิ่มคำหลัก `function` letและconst`function` ทำให้ JavaScript รองรับทั้งการกำหนดขอบเขตบล็อกและการกำหนดขอบเขตฟังก์ชัน JavaScript รองรับการแทรกเครื่องหมายเซมิโคลอนโดยอัตโนมัติซึ่งหมายความว่าเครื่องหมายเซมิโคลอนที่ปกติใช้ปิดท้ายคำสั่งในภาษา C อาจถูกละเว้นใน JavaScript ได้[ 22 ]
เช่นเดียวกับภาษาโปรแกรมแบบ C การควบคุมการไหลของ โปรแกรม ทำได้โดยใช้ คำสั่ง while`if` for, do`if` , `if` while, `if` , `if` และ `if` ฟังก์ชันมีการกำหนดประเภทข้อมูลแบบหลวมๆ และสามารถรับและส่งคืนค่าประเภทใดก็ได้ อาร์กิวเมนต์ที่ไม่ได้ระบุจะใช้ค่าเริ่มต้นเป็น ` null` ifelseswitchundefined
พิมพ์แบบอ่อน
ECMAScript เป็นภาษาที่มีการกำหนดประเภทแบบหลวมๆหมายความว่าประเภทบางอย่างจะถูกกำหนดโดยปริยายตามการดำเนินการที่กำลังทำอยู่ อย่างไรก็ตาม มีข้อสังเกตแปลกๆ หลายประการในการใช้งาน JavaScript ในการแปลงตัวแปรจากประเภทหนึ่งไปเป็นอีกประเภทหนึ่ง
พลวัต
ECMAScript เป็นภาษาที่มีการกำหนดประเภทแบบไดนามิก ดังนั้น ประเภทจึงเชื่อมโยงกับค่าแทนที่จะเป็นนิพจน์ ECMAScript รองรับวิธีการต่างๆ ในการทดสอบประเภทของวัตถุ รวมถึงduck typing [ 23 ]
การขนย้ายเสาเข็ม
นับตั้งแต่ ES 2015 เป็นต้นมา การแปลงโค้ด JavaScript (Transpiling) กลายเป็นเรื่องปกติมาก การแปลงโค้ดคือการคอมไพล์จากซอร์สโค้ดหนึ่งไปยังอีกซอร์สโค้ดหนึ่ง โดยใช้ JavaScript เวอร์ชันใหม่กว่า และตัวแปลงโค้ดจะเขียนโค้ดใหม่เพื่อให้รองรับเบราว์เซอร์รุ่นเก่า โดยปกติแล้ว ตัวแปลงโค้ดจะแปลงลงไปเป็น ES3 เพื่อรักษาความเข้ากันได้กับเบราว์เซอร์ทุกเวอร์ชัน สามารถตั้งค่าการแปลงโค้ดไปยังเวอร์ชันเฉพาะได้ตามความต้องการ การแปลงโค้ดจะเพิ่มขั้นตอนพิเศษให้กับกระบวนการสร้าง และบางครั้งก็ทำเพื่อหลีกเลี่ยงการใช้polyfills polyfills สร้างคุณสมบัติใหม่สำหรับสภาพแวดล้อมรุ่นเก่าที่ไม่มีคุณสมบัติเหล่านั้น polyfills ทำเช่นนี้ในขณะรันไทม์ในตัวแปลภาษา เช่น เบราว์เซอร์ของผู้ใช้หรือบนเซิร์ฟเวอร์ ในทางกลับกัน การแปลงโค้ดจะเขียนโค้ด ECMA ใหม่ในระหว่างขั้นตอนการสร้างก่อนที่จะถึงตัวแปลภาษา
ความสอดคล้อง
ในปี 2010 Ecma International เริ่มพัฒนาการทดสอบมาตรฐานสำหรับ Ecma 262 ECMAScript [ 24 ] Test262 เป็นชุดทดสอบการปฏิบัติตาม ECMAScript ที่สามารถใช้ตรวจสอบว่าการใช้งาน JavaScript เป็นไปตามข้อกำหนด ECMAScript มากน้อยเพียงใด ชุดทดสอบประกอบด้วยการทดสอบหลายพันรายการ โดยแต่ละรายการจะทดสอบข้อกำหนดเฉพาะบางประการของข้อกำหนด ECMAScript การพัฒนา Test262 เป็นโครงการของคณะกรรมการทางเทคนิค Ecma 39 (TC39) กรอบการทดสอบและการทดสอบแต่ละรายการได้รับการสนับสนุนจากองค์กรสมาชิกของ TC39 ให้กับ Ecma
Google ( ชุดทดสอบ Sputnik ) และ Microsoft ได้มีส่วนร่วมอย่างสำคัญ โดยทั้งสองบริษัทได้ร่วมกันสร้างชุดทดสอบหลายพันรายการ ชุดทดสอบ Test262 ประกอบด้วย38,014การทดสอบ ณ เดือนมกราคม 2020 [ 25 ]ข้อกำหนดECMAScriptจนถึง ES7 ได้รับการสนับสนุนอย่างดีในเว็บเบราว์เซอร์หลัก ตารางด้านล่างแสดงอัตราการสอดคล้องสำหรับซอฟต์แวร์เวอร์ชันปัจจุบันเมื่อเทียบกับ ECMAScript รุ่นล่าสุด
| เครื่องมือเขียนสคริปต์ | เอกสารอ้างอิง (ใบสมัคร) | การปฏิบัติตาม[ 26 ] | |||
|---|---|---|---|---|---|
| ES5 [ 27 ] | ES6 (2015) [ 28 ] | ES2016+ [ 29 ] | ES.Next [ 30 ] [ 31 ] | ||
| สไปเดอร์มังกี้ | Firefox 120 | 100% | 98% | 98% | 5% |
| วี8 | Google Chrome 117, Microsoft Edge 113, Opera 98 | 100% | 98% | 98% | 5% |
| JavaScriptCore | ซาฟารี 17 | 99% | 100% | 98% | 11% |
ดูเพิ่มเติม
หมายเหตุ
- ^ในอดีต ยังเคยถูกใช้เป็นมาตรฐานสำหรับ JScript ( Internet Explorer ) และ ActionScript ( Adobe Flash )
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ อีซีเอ็มเอสคริปต์
ECMAScript ( / ˈ ɛ k m ə s k r ɪ p t / ; ES ) [ 1 ] เป็นมาตรฐานสำหรับ ภาษา JavaScript ซึ่งมีจุดประสงค์เพื่อให้มั่นใจถึง ความสามารถในการทำงานร่วมกัน ของ เว็บเพจ...
มาตรฐาน
คณะกรรมการทางเทคนิค 39 ของ Ecma International เผยแพร่มาตรฐานหลายฉบับที่กำหนด JavaScript ซึ่งเรียกอย่างเป็นทางการว่า ECMAScript ซึ่งรวมถึงไวยากรณ์ของภาษา ความหมาย ไลบรารี และเทคโนโลยีเสริมที่สนับสนุนภาษา [ 7 ] [ 8 ] รายละเอียดของมาตรฐานมีดังต่อไปนี้
ข้อกำหนดภาษา ECMAScript (ECMA-262)
กำหนดภาษา JavaScript ซึ่งเดิมเรียกว่า ECMAScript [ 9 ] ECMA-262 ระบุเฉพาะไวยากรณ์ภาษาและความหมายของอินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชันหลัก ( API ) เช่น Array , Function , และ globalThis ในขณะที่การใช้งาน JavaScript ที่ถูกต้องจะเพิ่มฟังก์ชันการทำงานของตนเอง...
ข้อกำหนด API สำหรับการแปลภาษาของ ECMAScript (ECMA-402)
กำหนด API ของ JavaScript i18n ( Intl ) และเป็นส่วนเสริมของ ECMA-262 [ 10 ] ฟังก์ชันการทำงานได้รับการคัดเลือกจาก API การทำให้เป็นสากล เช่น API ของ ไลบรารี International Components for Unicode (ICU) ของ เฟรมเวิร์ก .NET หรือของแพลตฟอร์ม Java