fbpx
Wikipedia

ECMAScript

ECMAScript (/ˈɛkməskrɪpt/; ES)[1] is a JavaScript standard intended to ensure the interoperability of web pages across different browsers.[2] It is standardized by Ecma International in the document ECMA-262.

ECMAScript
ParadigmMulti-paradigm: prototype-based, functional, imperative
Designed byBrendan Eich, Ecma International
First appeared1997; 26 years ago (1997)
Typing disciplineweak, dynamic
Websitewww.ecma-international.org/publications-and-standards/standards/ecma-262/
Major implementations
JavaScript, SpiderMonkey, V8, ActionScript, JScript, QtScript, InScript, Google Apps Script
Influenced by
Self, HyperTalk, AWK, C, CoffeeScript, Perl, Python, Java, Scheme
ECMAScript (file format)
Filename extensions
.es
Internet media type
application/ecmascript
Developed bySun Microsystems,
Ecma International
Initial releaseJune 1997; 25 years ago (1997-06)
Latest release
Edition 13
June 2022; 7 months ago (2022-06)
Type of formatScripting language
WebsiteECMA-262, ECMA-290,
ECMA-327, ,
ECMA-402

ECMAScript is commonly used for client-side scripting on the World Wide Web, and it is increasingly being used for writing server-side applications and services using Node.js and other runtime environments.

ECMAScript, ECMA-262 and JavaScript

ECMA-262, or the ECMAScript Language Specification, defines the ECMAScript Language, or just ECMAScript.[3] ECMA-262 specifies only language syntax and the semantics of the core API, such as Array, Function, and globalThis, while valid implementations of JavaScript add their own functionality such as input-output and file-system handling.

History

The ECMAScript specification is a standardized specification of a scripting language developed by Brendan Eich of Netscape; initially named Mocha, then LiveScript, and finally JavaScript.[4] In December 1995, Sun Microsystems and Netscape announced JavaScript in a press release.[5] In November 1996, Netscape announced a meeting of the Ecma International standards organization to advance the standardization of JavaScript.[6] The first edition of ECMA-262 was adopted by the Ecma General Assembly in June 1997. Several editions of the language standard have been published since then. The name "ECMAScript" was a compromise between the organizations involved in standardizing the language, especially Netscape and Microsoft, whose disputes dominated the early standards sessions. Eich commented that "ECMAScript was always an unwanted trade name that sounds like a skin disease."[7] ECMAScript has been formalized through operational semantics by work at Stanford University and the Department of Computing, Imperial College London for security analysis and standardization.[8]

Version history

Features

The ECMAScript language includes structured, dynamic, functional, and prototype-based features.[9]

Imperative and structured

ECMAScript JavaScript supports C style structured programming. Previously, JavaScript only supported function scoping using the keyword var, but ECMAScript 2015 added the keywords let and const allowing JavaScript to support both block scoping and function scoping. JavaScript supports automatic semicolon insertion, meaning that semicolons that are normally used to terminate a statement in C may be omitted in JavaScript.[10]

Like C-style languages, control flow is done with the while, for, do / while, if / else, and switch statements. Functions are weakly typed and may accept and return any type. Arguments not provided default to undefined.

Weakly typed

ECMAScript is weakly typed. This means that certain types are assigned implicitly based on the operation being performed. However, there are several quirks in JavaScript's implementation of the conversion of a variable from one type to another. These quirks have been the subject of a talk entitled Wat.[11][12]

Dynamic

ECMAScript is dynamically typed. Thus, a type is associated with a value rather than an expression. ECMAScript supports various ways to test the type of objects, including duck typing.[13]

Transpiling

Since ES 2015, transpiling JavaScript has become very common. Transpilation is a source-to-source compilation in which newer versions of JavaScript are used, and a transpiler rewrites the source code so that it is supported by older browsers. Usually, transpilers transpile down to ES3 to maintain compatibility with all versions of browsers. The settings to transpiling to a specific version can be configured according to need. Transpiling adds an extra step to the build process and is sometimes done to avoid needing polyfills. Polyfills create new features for older environments that lack them. Polyfills do this at runtime in the interpreter, such as the user's browser or on the server. Instead, transpiling rewrites the ECMA code itself during the build phase of development before it reaches the interpreter.

Conformance

In 2010, Ecma International started developing a standards test for Ecma 262 ECMAScript.[14] Test262 is an ECMAScript conformance test suite that can be used to check how closely a JavaScript implementation follows the ECMAScript Specification. The test suite contains thousands of individual tests, each of which tests some specific requirement(s) of the ECMAScript specification. The development of Test262 is a project of the Ecma Technical Committee 39 (TC39). The testing framework and individual tests are created by member organizations of TC39 and contributed to Ecma for use in Test262.

Important contributions were made by Google (Sputnik testsuite) and Microsoft who both contributed thousands of tests. The Test262 testsuite consisted of 38014 tests as of January 2020.[15] ECMAScript specifications through ES7 are well-supported in major web browsers. The table below shows the conformance rate for current versions of software with respect to the most recent editions of ECMAScript.

Scripting engine conformance
Scripting engine Reference application(s) Conformance[16]
ES5[17] ES6 (2015)[18] ES7 (2016)[19] Newer (2017+)[19][20]
SpiderMonkey Firefox 94 100% 98% 100% 100%
V8 Google Chrome 95, Microsoft Edge 95, Opera 80 100% 98% 100% 100%
JavaScriptCore Safari 15 100% 99% 100% 90%

See also

References

  1. ^ Stefanov, Stoyan (2010). JavaScript Patterns. O'Reilly Media, Inc. p. 5. ISBN 9781449396947. from the original on 2016-06-10. Retrieved 2016-01-12. The core JavaScript programming language [...] is based on the ECMAScript standard, or ES for short.
  2. ^ Wirfs-Brock, Allen; Eich, Brendan (2020-05-02). "JavaScript: The First 20 Years". Proceedings of the ACM on Programming Languages. 4: 1–189. doi:10.1145/3386327. S2CID 219603695.{{cite journal}}: CS1 maint: date and year (link)
  3. ^ Guo, Shu-yu (2022-02-14). "ECMAScriptÂŽ 2022 Language Specification". tc39.es. Tc39.es. from the original on 2020-05-08. Retrieved 2022-02-14.
  4. ^ Krill, Paul (2008-06-23). "JavaScript creator ponders past, future". infoworld.com. InfoWorld. from the original on 2014-09-20. Retrieved 2013-10-31.
  5. ^ . Netscape.com. Netscape. 1995-12-04. Archived from the original on 2002-06-06. Retrieved 2019-11-04.
  6. ^ Press Release (November 15, 1996). . Netscape.com. Netscape. Archived from the original on 1998-12-03. Retrieved 2013-10-31.
  7. ^ Eich, Brendan (2006-10-03). "Will there be a suggested file suffix for es4?". mozilla.org. Mail.mozilla.org. from the original on 2020-06-21. Retrieved 2021-05-05.
  8. ^ Maffeis, Sergio; Mitchell, John C.; Taly, Ankur (2020-01-03). "An Operational Semantics for JavaScript" (PDF). stanford.edu. Association for Computing Machinery. (PDF) from the original on 2020-01-03. Retrieved 2020-01-03.
  9. ^ "About". ECMAScript. Archived from the original on 2012-08-02. Retrieved 2009-12-17.
  10. ^ David Flanagan (17 August 2006). JavaScript: The Definitive Guide: The Definitive Guide. "O'Reilly Media, Inc.". p. 16. ISBN 978-0-596-55447-7. from the original on 1 August 2020. Retrieved 11 November 2019.
  11. ^ Bernhardt, Gary. Wat. CodeMash 2012. Destroy All Software. from the original on 2019-10-28. Retrieved 2021-08-18.
  12. ^ Gilbertson, Scott (26 January 2012). "Jokes for Nerds: Wat Moments in Programming". Wired. from the original on 23 August 2020. Retrieved 22 August 2021.
  13. ^ "JavaScript data types and data structures – JavaScript | MDN". Developer.mozilla.org. 2017-02-16. from the original on 2017-03-14. Retrieved 2017-02-24.
  14. ^ . Test262.ecmascript.org. Archived from the original on 2011-05-14. Retrieved 2013-10-31.
  15. ^ "tc39/test262". GitHub. January 24, 2020. from the original on October 1, 2019. Retrieved January 29, 2020.
  16. ^ ES5 is the baseline for this test suite. The conformance rate for other editions reflects support for new features only, not a comprehensive score.
  17. ^ "ECMAScript 5 compatibility table". kangax.github.io. from the original on 2018-11-19. Retrieved 2018-11-08.
  18. ^ "ECMAScript 6 compatibility table". kangax.github.io. from the original on 2018-11-17. Retrieved 2018-11-08.
  19. ^ a b "ECMAScript 2016+ compatibility table". kangax.github.io. from the original on 2018-11-24. Retrieved 2018-11-08.
  20. ^ Composite score that includes new features from ES7 through next edition drafts

ecmascript, javascript, standard, intended, ensure, interoperability, pages, across, different, browsers, standardized, ecma, international, document, ecma, paradigmmulti, paradigm, prototype, based, functional, imperativedesigned, bybrendan, eich, ecma, inter. ECMAScript ˈ ɛ k m e s k r ɪ p t ES 1 is a JavaScript standard intended to ensure the interoperability of web pages across different browsers 2 It is standardized by Ecma International in the document ECMA 262 ECMAScriptParadigmMulti paradigm prototype based functional imperativeDesigned byBrendan Eich Ecma InternationalFirst appeared1997 26 years ago 1997 Typing disciplineweak dynamicWebsitewww wbr ecma international wbr org wbr publications and standards wbr standards wbr ecma 262 wbr Major implementationsJavaScript SpiderMonkey V8 ActionScript JScript QtScript InScript Google Apps ScriptInfluenced bySelf HyperTalk AWK C CoffeeScript Perl Python Java SchemeECMAScript file format Filename extensions esInternet media typeapplication ecmascriptDeveloped bySun Microsystems Ecma InternationalInitial releaseJune 1997 25 years ago 1997 06 Latest releaseEdition 13June 2022 7 months ago 2022 06 Type of formatScripting languageWebsiteECMA 262 ECMA 290 ECMA 327 ECMA 357 ECMA 402ECMAScript is commonly used for client side scripting on the World Wide Web and it is increasingly being used for writing server side applications and services using Node js and other runtime environments Contents 1 ECMAScript ECMA 262 and JavaScript 2 History 2 1 Version history 3 Features 3 1 Imperative and structured 3 2 Weakly typed 3 3 Dynamic 3 4 Transpiling 4 Conformance 5 See also 6 ReferencesECMAScript ECMA 262 and JavaScript EditECMA 262 or the ECMAScript Language Specification defines the ECMAScript Language or just ECMAScript 3 ECMA 262 specifies only language syntax and the semantics of the core API such as Array Function and globalThis while valid implementations of JavaScript add their own functionality such as input output and file system handling History EditThe ECMAScript specification is a standardized specification of a scripting language developed by Brendan Eich of Netscape initially named Mocha then LiveScript and finally JavaScript 4 In December 1995 Sun Microsystems and Netscape announced JavaScript in a press release 5 In November 1996 Netscape announced a meeting of the Ecma International standards organization to advance the standardization of JavaScript 6 The first edition of ECMA 262 was adopted by the Ecma General Assembly in June 1997 Several editions of the language standard have been published since then The name ECMAScript was a compromise between the organizations involved in standardizing the language especially Netscape and Microsoft whose disputes dominated the early standards sessions Eich commented that ECMAScript was always an unwanted trade name that sounds like a skin disease 7 ECMAScript has been formalized through operational semantics by work at Stanford University and the Department of Computing Imperial College London for security analysis and standardization 8 Version history Edit Main article ECMAScript version historyFeatures EditThis section needs expansion You can help by adding to it February 2017 Main articles ECMAScript syntax and JavaScript Features The ECMAScript language includes structured dynamic functional and prototype based features 9 Imperative and structured Edit ECMAScript JavaScript supports C style structured programming Previously JavaScript only supported function scoping using the keyword var but ECMAScript 2015 added the keywords let and const allowing JavaScript to support both block scoping and function scoping JavaScript supports automatic semicolon insertion meaning that semicolons that are normally used to terminate a statement in C may be omitted in JavaScript 10 Like C style languages control flow is done with the while for do while if else and switch statements Functions are weakly typed and may accept and return any type Arguments not provided default to undefined Weakly typed Edit ECMAScript is weakly typed This means that certain types are assigned implicitly based on the operation being performed However there are several quirks in JavaScript s implementation of the conversion of a variable from one type to another These quirks have been the subject of a talk entitled Wat 11 12 Dynamic Edit ECMAScript is dynamically typed Thus a type is associated with a value rather than an expression ECMAScript supports various ways to test the type of objects including duck typing 13 Transpiling Edit Main article JavaScript transpilers Since ES 2015 transpiling JavaScript has become very common Transpilation is a source to source compilation in which newer versions of JavaScript are used and a transpiler rewrites the source code so that it is supported by older browsers Usually transpilers transpile down to ES3 to maintain compatibility with all versions of browsers The settings to transpiling to a specific version can be configured according to need Transpiling adds an extra step to the build process and is sometimes done to avoid needing polyfills Polyfills create new features for older environments that lack them Polyfills do this at runtime in the interpreter such as the user s browser or on the server Instead transpiling rewrites the ECMA code itself during the build phase of development before it reaches the interpreter Conformance EditIn 2010 Ecma International started developing a standards test for Ecma 262 ECMAScript 14 Test262 is an ECMAScript conformance test suite that can be used to check how closely a JavaScript implementation follows the ECMAScript Specification The test suite contains thousands of individual tests each of which tests some specific requirement s of the ECMAScript specification The development of Test262 is a project of the Ecma Technical Committee 39 TC39 The testing framework and individual tests are created by member organizations of TC39 and contributed to Ecma for use in Test262 Important contributions were made by Google Sputnik testsuite and Microsoft who both contributed thousands of tests The Test262 testsuite consisted of 38014 tests as of January 2020 update 15 ECMAScript specifications through ES7 are well supported in major web browsers The table below shows the conformance rate for current versions of software with respect to the most recent editions of ECMAScript Scripting engine conformance Scripting engine Reference application s Conformance 16 ES5 17 ES6 2015 18 ES7 2016 19 Newer 2017 19 20 SpiderMonkey Firefox 94 100 98 100 100 V8 Google Chrome 95 Microsoft Edge 95 Opera 80 100 98 100 100 JavaScriptCore Safari 15 100 99 100 90 See also EditECMAScript for XML E4X JavaScript JScript List of ECMAScript enginesReferences Edit Stefanov Stoyan 2010 JavaScript Patterns O Reilly Media Inc p 5 ISBN 9781449396947 Archived from the original on 2016 06 10 Retrieved 2016 01 12 The core JavaScript programming language is based on the ECMAScript standard or ES for short Wirfs Brock Allen Eich Brendan 2020 05 02 JavaScript The First 20 Years Proceedings of the ACM on Programming Languages 4 1 189 doi 10 1145 3386327 S2CID 219603695 a href Template Cite journal html title Template Cite journal cite journal a CS1 maint date and year link Guo Shu yu 2022 02 14 ECMAScriptAZ 2022 Language Specification tc39 es Tc39 es Archived from the original on 2020 05 08 Retrieved 2022 02 14 Krill Paul 2008 06 23 JavaScript creator ponders past future infoworld com InfoWorld Archived from the original on 2014 09 20 Retrieved 2013 10 31 Netscape and Sun announce JavaScript the Open Cross platform Object Scripting Language for Enterprise Networks and the Internet Netscape com Netscape 1995 12 04 Archived from the original on 2002 06 06 Retrieved 2019 11 04 Press Release November 15 1996 Industry Leaders to Advance Standardization of Netscape s JavaScript at Standards Body Meeting Netscape com Netscape Archived from the original on 1998 12 03 Retrieved 2013 10 31 Eich Brendan 2006 10 03 Will there be a suggested file suffix for es4 mozilla org Mail mozilla org Archived from the original on 2020 06 21 Retrieved 2021 05 05 Maffeis Sergio Mitchell John C Taly Ankur 2020 01 03 An Operational Semantics for JavaScript PDF stanford edu Association for Computing Machinery Archived PDF from the original on 2020 01 03 Retrieved 2020 01 03 About ECMAScript Archived from the original on 2012 08 02 Retrieved 2009 12 17 David Flanagan 17 August 2006 JavaScript The Definitive Guide The Definitive Guide O Reilly Media Inc p 16 ISBN 978 0 596 55447 7 Archived from the original on 1 August 2020 Retrieved 11 November 2019 Bernhardt Gary Wat CodeMash 2012 Destroy All Software Archived from the original on 2019 10 28 Retrieved 2021 08 18 Gilbertson Scott 26 January 2012 Jokes for Nerds Wat Moments in Programming Wired Archived from the original on 23 August 2020 Retrieved 22 August 2021 JavaScript data types and data structures JavaScript MDN Developer mozilla org 2017 02 16 Archived from the original on 2017 03 14 Retrieved 2017 02 24 ECMAScript Language test262 Test262 ecmascript org Archived from the original on 2011 05 14 Retrieved 2013 10 31 tc39 test262 GitHub January 24 2020 Archived from the original on October 1 2019 Retrieved January 29 2020 ES5 is the baseline for this test suite The conformance rate for other editions reflects support for new features only not a comprehensive score ECMAScript 5 compatibility table kangax github io Archived from the original on 2018 11 19 Retrieved 2018 11 08 ECMAScript 6 compatibility table kangax github io Archived from the original on 2018 11 17 Retrieved 2018 11 08 a b ECMAScript 2016 compatibility table kangax github io Archived from the original on 2018 11 24 Retrieved 2018 11 08 Composite score that includes new features from ES7 through next edition drafts Retrieved from https en wikipedia org w index php title ECMAScript amp oldid 1126915511 4th Edition abandoned, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.