Paradigm | Multi-paradigm: event-driven, functional, imperative, procedural, object-oriented |
---|---|
Designed by | Brendan Eich of Netscape initially; others have also contributed to the ECMAScript standard |
First appeared | 4 December 1995[1] |
Stable release | ECMAScript 2024[2]
/ June 2024 |
Preview release | ECMAScript 2025[3]
/ 27 March 2024 |
Typing discipline | Dynamic, weak, duck |
Memory management | Garbage collection |
Filename extensions |
|
Website | ecma-international |
Major implementations | |
V8, JavaScriptCore, SpiderMonkey, Chakra | |
Influenced by | |
Java,[5][6] Scheme,[6] Self,[7] AWK,[8] HyperTalk[9] | |
Influenced | |
ActionScript, ArkTS, AssemblyScript, CoffeeScript, Dart, Haxe, JS++, Opa, TypeScript | |
|
JavaScript (/ˈdʒɑːvəskrɪpt/), often abbreviated as JS, is a programming language and core technology of the Web, alongside HTML and CSS. 99% of websites use JavaScript on the client side for webpage behavior.[10]
Web browsers have a dedicated JavaScript engine that executes the client code. These engines are also utilized in some servers and a variety of apps. The most popular runtime system for non-browser usage is Node.js.
JavaScript is a high-level, often just-in-time compiled language that conforms to the ECMAScript standard.[11] It has dynamic typing, prototype-based object-orientation, and first-class functions. It is multi-paradigm, supporting event-driven, functional, and imperative programming styles. It has application programming interfaces (APIs) for working with text, dates, regular expressions, standard data structures, and the Document Object Model (DOM).
The ECMAScript standard does not include any input/output (I/O), such as networking, storage, or graphics facilities. In practice, the web browser or other runtime system provides JavaScript APIs for I/O.
Although Java and JavaScript are similar in name, syntax, and respective standard libraries, the two languages are distinct and differ greatly in design.
Eich: The immediate concern at Netscape was it must look like Java.
origin
was invoked but never defined (see the help page).Eich: "function", eight letters, I was influenced by AWK.