ECMAScript: Difference between revisions

Content deleted Content added
m Reverting possible vandalism by 41.45.154.190 to version by MSWS. Report False Positive? Thanks, ClueBot NG. (4412224) (Bot)
 
(9 intermediate revisions by 9 users not shown)
Line 5:
| designer = [[Brendan Eich]], [[Ecma International]]
| typing = [[weak typing|weak]], [[dynamic typing|dynamic]]
| implementations = [[JavaScript]], [[ActionScript]], [[JScript]], [[QtScript]], [[InScript (JavaScript engine)|InScript]], [[Google Apps Script]]
| website = {{URL|https://www.ecma-international.org/publications-and-standards/standards/ecma-262/}}
| year = {{Start date and age|1997}}
Line 48:
|archive-url = https://web.archive.org/web/20160610005241/https://books.google.com/books?id=WTZqecc9olUC
|url-status = live
}}</ref> 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.<ref>{{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 |issue=HOPL |pages=1–189 |doi=10.1145/3386327 |doi-access=free |s2cid=219603695}}</ref> It is standardized by [[Ecma International]] in the document [https://www.ecma-international.org/publications-and-standards/standards/ecma-262/ ECMA-262].
 
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 such as [[Node.js]],<ref>{{cite web|last=Wunder|first=C.|url=https://nodejs.org/en/docs/es6 | title=Node.js — ECMAScript 2015 (ES6) and beyond|website=Node.js}}</ref> [[Deno (software)|Deno]]<ref>{{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 }}</ref> and [[Bun (software)|Bun]].<ref>https://bun.sh/docs#:~:text=or%2C%20more%20formally%2C-,ECMAScript,-)%20is%20just%20a bun</ref>
 
== ECMAScript, ECMA-262, JavaScript ==
'''ECMA-262''', or the ''ECMAScript Language Specification'', defines the ''ECMAScript Language'', or just '''ECMAScript'''.<ref>{{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}}</ref> 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.
 
== History==
Line 74:
 
=== 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 <!-- humorous --> talk entitled ''Wat''.<ref>{{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 }}</ref><ref>{{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 }}</ref>
 
=== Dynamic ===