Array ( [0] => {{Short description|Specification for Javascript and other programming languages}} [1] => {{Infobox programming language [2] => | name = ECMAScript [3] => | paradigm = [[Multi-paradigm]]: [[prototype-based programming|prototype-based]], [[functional programming|functional]], [[imperative programming|imperative]] [4] => | designer = [[Brendan Eich]], [[Ecma International]] [5] => | typing = [[weak typing|weak]], [[dynamic typing|dynamic]] [6] => | implementations = [[JavaScript]], [[ActionScript]], [[JScript]], [[QtScript]], [[InScript (JavaScript engine)|InScript]], [[Google Apps Script]] [7] => | website = {{URL|https://www.ecma-international.org/publications-and-standards/standards/ecma-262/}} [8] => | year = {{Start date and age|1997}} [9] => | influenced_by = [[Self (programming language)|Self]], [[HyperTalk]], [[AWK]], [[C (programming language)|C]], [[CoffeeScript]], [[Perl]], [[Python (programming language)|Python]], [[Java (programming language)|Java]], [[Scheme (programming language)|Scheme]] [10] => }} [11] => {{Infobox file format [12] => | name = ECMAScript (file format) [13] => | icon = Crystal source.svg [14] => | logo = [15] => | screenshot = [16] => | caption = [17] => | extension = .es [18] => | mime = application/ecmascript [19] => | type code = [20] => | uniform type = [21] => | magic = [22] => | owner = [[Sun Microsystems]],
[[Ecma International]] [23] => | released = {{Start date and age|1997|06}} [24] => | latest release version = Edition 14 [25] => | latest release date = {{start date and age|2023|06}} [26] => | genre = [[Scripting language]] [27] => | container for = [28] => | contained by = [29] => | extensions = JavaScriptes [30] => | extended to = [31] => | standard = [32] => | url = [https://www.ecma-international.org/publications-and-standards/standards/ Standards] [33] => }} [34] => [35] => '''ECMAScript''' ({{IPAc-en|'|ɛ|k|m|ə|s|k|r|ɪ|p|t}}; '''ES'''){{cite book [36] => |last1 = Stefanov [37] => |first1 = Stoyan [38] => |title = JavaScript Patterns [39] => |url = https://books.google.com/books?id=WTZqecc9olUC [40] => |publisher = O'Reilly Media, Inc. [41] => |date = 2010 [42] => |page = 5 [43] => |isbn = 9781449396947 [44] => |access-date = 2016-01-12 [45] => |quote = The core JavaScript programming language [...] is based on the ''ECMAScript'' standard, or ES for short. [46] => |archive-date = 2016-06-10 [47] => |archive-url = https://web.archive.org/web/20160610005241/https://books.google.com/books?id=WTZqecc9olUC [48] => |url-status = live [49] => }} is a standard for scripting languages, including [[JavaScript]], [[JScript]], and [[ActionScript]]. It is best known as a JavaScript standard intended to ensure the [[interoperability]] of [[web page]]s across different [[web browser]]s.{{cite journal |last1=Wirfs-Brock |first1=Allen |last2=Eich |first2=Brendan |date=2020-05-02 |title=JavaScript: The First 20 Years |journal=Proceedings of the ACM on Programming Languages |volume=4 |pages=1–189 |doi=10.1145/3386327 |doi-access=free |s2cid=219603695}} It is standardized by [[Ecma International]] in the document [https://www.ecma-international.org/publications-and-standards/standards/ecma-262/ ECMA-262]. [50] => [51] => ECMAScript is commonly used for [[client-side scripting]] on the [[World Wide Web]], and it is increasingly being used for server-side applications and services using runtime environments - [[Node.js]],{{cite web | url=https://nodejs.org/en/docs/es6 | title=Node.js — ECMAScript 2015 (ES6) and beyond }} [[Deno (software)|deno]]{{cite web | url=https://www.infoworld.com/article/3644460/deno-joins-javascript-standards-effort.html | title=Deno joins JavaScript standards effort | date=14 December 2021 }} and [[Bun (software)|bun]].https://bun.sh/docs#:~:text=or%2C%20more%20formally%2C-,ECMAScript,-)%20is%20just%20a bun [52] => [53] => == ECMAScript, ECMA-262, JavaScript == [54] => '''ECMA-262''', or the ''ECMAScript Language Specification'', defines the ''ECMAScript Language'', or just '''ECMAScript'''.{{cite web |last=Guo |first=Shu-yu |date=2022-02-14 |title=ECMAScriptÂŽ 2022 Language Specification |url=https://tc39.es/ecma262/ |url-status=live |archive-url=https://web.archive.org/web/20200508053013/https://tc39.es/ecma262/ |archive-date=2020-05-08 |website=tc39.es |accessdate=2022-02-14}} ECMA-262 specifies only language syntax and the semantics of the core application programming interface ([[API]]), such as {{mono|Array}}, {{mono|Function}}, and {{mono|globalThis}}, while valid implementations of JavaScript add their own functionality such as [[input/output]] and [[File manager|file system]] handling. [55] => [56] => == History== [57] => The ECMAScript specification is a standardized specification of a scripting language developed by [[Brendan Eich]] of [[Netscape Communications Corporation|Netscape]]; initially named Mocha, then LiveScript, and finally JavaScript.{{cite web |last=Krill |first=Paul |date=2008-06-23 |title=JavaScript creator ponders past, future |url=http://www.infoworld.com/article/2653798/application-development/javascript-creator-ponders-past--future.html |url-status=live |archive-url=https://web.archive.org/web/20140920141040/http://www.infoworld.com/article/2653798/application-development/javascript-creator-ponders-past--future.html |archive-date=2014-09-20 |access-date=2013-10-31 |website=infoworld.com |publisher=InfoWorld}} In December 1995, [[Sun Microsystems]] and Netscape announced JavaScript in a press release.{{cite web |date=1995-12-04 |title=Netscape and Sun announce JavaScript, the Open, Cross-platform Object Scripting Language for Enterprise Networks and the Internet |url=http://wp.netscape.com/newsref/pr/newsrelease67.html |url-status=dead |archive-url=https://web.archive.org/web/20020606002913/http://wp.netscape.com/newsref/pr/newsrelease67.html |archive-date=2002-06-06 |access-date=2019-11-04 |website=Netscape.com |publisher=Netscape}} In November 1996, Netscape announced a meeting of the [[Ecma International]] standards organization to advance the standardization of JavaScript.{{cite web |last=Press Release |date=November 15, 1996 |title=Industry Leaders to Advance Standardization of Netscape's JavaScript at Standards Body Meeting |url=http://cgi.netscape.com/newsref/pr/newsrelease289.html |url-status=dead |archive-url=https://web.archive.org/web/19981203070212/http://cgi.netscape.com/newsref/pr/newsrelease289.html |archive-date=1998-12-03 |access-date=2013-10-31 |website=Netscape.com |publisher=Netscape}} 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 [[eczema|skin disease]]."{{cite web |last=Eich |first=Brendan |date=2006-10-03 |title=Will there be a suggested file suffix for es4? |url=https://mail.mozilla.org/pipermail/es-discuss/2006-October/000133.html |url-status=live |archive-url=https://web.archive.org/web/20200621202321/https://mail.mozilla.org/pipermail/es-discuss/2006-October/000133.html |archive-date=2020-06-21 |access-date=2021-05-05 |website=mozilla.org |publisher=Mail.mozilla.org}} ECMAScript has been formalized through operational semantics by work at [[Stanford University]] and the [[Department of Computing, Imperial College London|Department of Computing]], [[Imperial College London]] for security analysis and standardization.{{cite web |last1=Maffeis |first1=Sergio |last2=Mitchell |first2=John C. |last3=Taly |first3=Ankur |date=2020-01-03 |title=An Operational Semantics for JavaScript |url=http://theory.stanford.edu/people/jcm/papers/aplas08-camera-ready.pdf |url-status=live |archive-url=https://web.archive.org/web/20200103204704/http://theory.stanford.edu/people/jcm/papers/aplas08-camera-ready.pdf |archive-date=2020-01-03 |access-date=2020-01-03 |website=stanford.edu |publisher=[[Association for Computing Machinery]]}} [58] => "ECMA" stood for "European Computer Manufacturers Association" until 1994. [59] => [60] => ===Version history=== [61] => {{Main|ECMAScript version history}} [62] => [63] => == Features == [64] => {{expand section|date=February 2017}} [65] => {{main|ECMAScript syntax|JavaScript#Features}} [66] => The ECMAScript language includes [[structured programming|structured]], [[dynamic programming language|dynamic]], [[functional programming|functional]], and [[prototype-based programming|prototype-based]] features.{{cite web |url=http://www.ecmascript.org/about.php |title=About |publisher=ECMAScript |access-date=2009-12-17 |url-status=dead |archive-url=https://archive.today/20120802115457/http://www.ecmascript.org/about.php |archive-date=2012-08-02 }} [67] => [68] => === Imperative and structured === [69] => ECMAScript JavaScript supports [[C (programming language)|C]]-style structured programming. Previously, JavaScript only supported [[Scope (computer science)|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 normally terminate a statement in C may be omitted in JavaScript.{{cite book|url=https://books.google.com/books?id=2weL0iAfrEMC|title=JavaScript: The Definitive Guide: The Definitive Guide|author=David Flanagan|date=17 August 2006|publisher="O'Reilly Media, Inc."|isbn=978-0-596-55447-7|page=16|access-date=11 November 2019|archive-date=1 August 2020|archive-url=https://web.archive.org/web/20200801065235/https://books.google.com/books?id=2weL0iAfrEMC|url-status=live}} [70] => [71] => Like C-style languages, [[control flow]] is done with the {{Code|code=while}}, {{Code|code=for}}, {{Code|code=do}} / {{Code|code=while}}, {{Code|code=if}} / {{Code|code=else}}, and {{Code|code=switch}} statements. Functions are weakly typed and may accept and return any type. Arguments not provided default to {{Code|code=undefined}}. [72] => [73] => === Weakly typed === [74] => 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''.{{cite conference |last1=Bernhardt |first1=Gary |title=Wat |url=https://www.destroyallsoftware.com/talks/wat |website=Destroy All Software |conference=CodeMash 2012 |access-date=2021-08-18 |archive-date=2019-10-28 |archive-url=https://web.archive.org/web/20191028204723/https://www.destroyallsoftware.com/talks/wat |url-status=live }}{{cite magazine |last1=Gilbertson |first1=Scott |title=Jokes for Nerds: Wat Moments in Programming |url=https://www.wired.com/2012/01/jokes-for-nerds-wat-moments-in-programming/ |access-date=22 August 2021 |magazine=Wired |date=26 January 2012 |archive-date=23 August 2020 |archive-url=https://web.archive.org/web/20200823123837/https://www.wired.com/2012/01/jokes-for-nerds-wat-moments-in-programming/ |url-status=live }} [75] => [76] => === Dynamic === [77] => 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]].{{cite web|url=https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures|title=JavaScript data types and data structures – JavaScript {{pipe}} MDN|date=2017-02-16|website=Developer.mozilla.org|access-date=2017-02-24|archive-date=2017-03-14|archive-url=https://web.archive.org/web/20170314230542/https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures|url-status=live}} [78] => [79] => === Transpiling === [80] => {{Main|JavaScript#transpilers}} [81] => 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 transpile 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 [[Polyfill (programming)|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. [82] => [83] => == Conformance == [84] => In 2010, Ecma International started developing a standards test for Ecma 262 ECMAScript.{{cite web |url=http://test262.ecmascript.org/ |title=ECMAScript Language – test262 |publisher=Test262.ecmascript.org |access-date=2013-10-31 |url-status=dead |archive-url=https://web.archive.org/web/20110514205704/http://test262.ecmascript.org/ |archive-date=2011-05-14 }} [85] => 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 the individual tests are contributed to Ecma by member organizations of TC39. [86] => [87] => Important contributions were made by Google ([[Sputnik (JavaScript conformance test)|Sputnik test suite]]) and Microsoft, who both contributed thousands of tests. [88] => The Test262 test suite consisted of {{val|38014}} tests {{as of|2020|01|lc=y}}.{{cite web | title=tc39/test262 | website=GitHub | date=January 24, 2020 | url=https://github.com/tc39/test262 | access-date=January 29, 2020 | archive-date=October 1, 2019 | archive-url=https://web.archive.org/web/20191001032806/https://github.com/tc39/test262 | url-status=live }} ECMAScript specifications through ES7 are well-supported in major [[web browser]]s. The table below shows the conformance rate for current versions of software with respect to the most recent editions of ECMAScript. [89] => [90] => {| class="wikitable sortable" [91] => |+Scripting engine conformance [92] => |- style="background:#ccf;" [93] => ! scope="col" rowspan="2" | Scripting engine [94] => ! scope="col" rowspan="2" | Reference application(s) [95] => ! scope="col" colspan="4" | ConformanceES5 is the baseline for this test suite. The conformance rate for other editions reflects support for new features only, not a comprehensive score. [96] => |- [97] => !scope="col" | ES5{{cite web |date=2024-04-14 |title=ECMAScript 5 compatibility table |url=https://compat-table.github.io/compat-table/es5/ |url-status=live |archive-url=https://web.archive.org/web/20240114035054/https://compat-table.github.io/compat-table/es5/ |archive-date=2024-01-14 |access-date=2024-04-14 |website=compat-table.github.io |language=en}} [98] => !scope="col" | ES6 (2015){{cite web |date=2024-04-14 |title=ECMAScript 6 compatibility table |url=https://compat-table.github.io/compat-table/es6/ |url-status=live |archive-url=https://web.archive.org/web/20240404212624/https://compat-table.github.io/compat-table/es6/ |archive-date=2024-04-04 |access-date=2024-04-14 |website=compat-table.github.io |language=en}} [99] => !scope="col" | ES2016+{{cite web |date=2024-04-14 |title=ECMAScript 2016+ compatibility table |url=https://compat-table.github.io/compat-table/es2016plus/ |url-status=live |archive-url=https://web.archive.org/web/20240114034945/https://compat-table.github.io/compat-table/es2016plus/ |archive-date=2024-01-14 |access-date=2024-04-14 |website=compat-table.github.io |language=en}} [100] => !scope="col" | Next{{Cite web |date=2024-04-14 |title=ECMAScript Next compatibility table |url=https://compat-table.github.io/compat-table/esnext/ |url-status=live |archive-url=https://web.archive.org/web/20240114035113/https://compat-table.github.io/compat-table/esnext/ |archive-date=2024-01-14 |access-date=2024-04-14 |website=compat-table.github.io}}Composite score that includes new features from ES7 through next edition drafts [101] => |- [102] => !scope="row" | [[SpiderMonkey]] [103] => | [[Firefox]] 120 [104] => | 100% || 98% || 98% || 5% [105] => |- [106] => !scope="row" | [[V8 (JavaScript engine)|V8]] [107] => | [[Google Chrome]] 117, [[Microsoft Edge]] 113, [[Opera (web browser)|Opera]] 98 [108] => | 100% || 98% || 98% || 5% [109] => |- [110] => !scope="row" | [[JavaScriptCore]] [111] => | [[Safari (web browser)|Safari]] 17 [112] => | 99% || 100% || 98% || 11% [113] => |} [114] => [115] => == See also == [116] => * [[ECMAScript for XML]] (E4X) [117] => * [[List of ECMAScript engines]] [118] => [119] => == References == [120] => {{Reflist|colwidth=30em}} [121] => [122] => {{Clear}} [123] => {{ECMAScript}} [124] => {{Ecma International Standards}} [125] => {{ISO standards}} [126] => {{List of IEC standards}} [127] => [128] => [[Category:Ecma standards]] [129] => [[Category:Object-based programming languages]] [130] => [[Category:Programming languages with an ISO standard]] [131] => [[Category:Scripting languages]] [132] => [[Category:Source-to-source compilers]] [] => )
good wiki

ECMAScript

ECMAScript is a scripting language specification standardized by Ecma International in order to standardize script languages that are used for web development. It is primarily known for being the underlying technology behind JavaScript, which is the most widely used programming language for web development.

More about us

About

It is primarily known for being the underlying technology behind JavaScript, which is the most widely used programming language for web development. The ECMAScript specification defines the syntax, semantics, and standard library for the language, providing guidelines for how JavaScript should behave in different environments. This allows developers to write code that can run consistently across different web browsers and platforms. Since its initial release in 1997, ECMAScript has undergone several revisions, with ECMAScript 6 (ES6) being a major milestone that introduced many new features and improvements to JavaScript. Subsequent versions, such as ECMAScript 2016 and ECMAScript 2017, have added additional enhancements and supported new language features. ECMAScript is a dynamic, weakly-typed language that supports object-oriented, functional, and imperative programming paradigms. It provides powerful features such as closures, hoisting, and prototypes, which allow developers to write concise and expressive code. In addition to web development, ECMAScript is also used in other contexts such as server-side programming (with Node. js), mobile app development (with frameworks like React Native), and desktop application development (with frameworks like Electron). Overall, ECMAScript plays a crucial role in the development of modern web applications and has contributed to the rapid growth of JavaScript as a versatile and widely adopted programming language. The standardization efforts by Ecma International ensure that JavaScript remains a reliable and consistent language for developers worldwide.

Expert Team

Vivamus eget neque lacus. Pellentesque egauris ex.

Award winning agency

Lorem ipsum, dolor sit amet consectetur elitorceat .

10 Year Exp.

Pellen tesque eget, mauris lorem iupsum neque lacus.