ECMAScript, ECMA-262, JavaScript
ECMA-262, or the ''ECMAScript Language Specification'', defines the ''ECMAScript Language'', or just ECMAScript. ECMA-262 specifies only language syntax and the semantics of the core application programming interface ( API), such as , , and , while valid implementations of JavaScript add their own functionality such asHistory
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. In December 1995,Evolution
Ecma's Technical Committee 39 (TC39) is responsible for the maintenance of ECMAScript. New proposals to the language go through a staged process, with each stage representing the completeness of the proposal's specification. Consensus must be reached within the committee to advance a proposal to the next stage. Proposals that reach stage 4, the final stage, will be included into the next version of the standard. Since the release of version 6 in June 2015, new major versions have been finalized and published every June.Features
The ECMAScript language includes structured, dynamic, functional, and prototype-based features.Imperative and structured
ECMAScript JavaScript supports C-style structured programming. Previously, JavaScript only supported function scoping using the keywordvar
, 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.
Like C-style languages, control flow is done with the , , / , / , and statements. Functions are weakly typed and may accept and return any type. Arguments not provided default to .
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''.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.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 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 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. 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. Important contributions were made by Google ( Sputnik test suite) and Microsoft, who both contributed thousands of tests. The Test262 test suite consisted of tests . ECMAScript specifications through ES7 are well-supported in majorSee also
* ECMAScript for XML (E4X) * List of ECMAScript enginesReferences
{{List of IEC standards Ecma standards Object-based programming languages Programming languages with an ISO standard Scripting languages Source-to-source compilers