Introduction

JavaScript was initially the programming language that was run on web browsers.

When Node.js was born, JavaScript became available for programming outside of web browsers (e.g. you can now make a web server with Node.js).

With the dramatic success of Node.js, JavaScript is now "the most-used programming language among software developers" (Flanagan).

You can play around with the JS editor on this site (press the "play" icon to run your code). Technical note: it runs on eval and mocks the console object.

Properties of JavaScript

JavaScript is these kinds of programming language (Flanagan):

  • high-level meaning it is closer to a human language than a machine language (designed to be human-readable), as well asabstracting the details of the computer architecture on which it is run
  • dynamic things otherwise done at compile-time can be done at run-time (e.g. changing the type of a variable, extending objects, adding new codes)
  • dynamically-typed types of variables are assigned during run-time
  • interpreted the codes are not compiled; they are all parsed, interpreted, and executed during runtime
  • has prototype-based inheritance each object in JavaScript has a private property called prototype which references another object (its "parent", which also has its own prototype) or null (if it has no parent)

Despite their names' similarity, JavaScript has nothing to do with Java. (Some of their syntaxes may be similar, though.)

Standardization of JavaScript

The standardized version of JavaScript was called the "ECMAScript" (or "ES" for short), although everybody just called it JavaScript. This was submitted by Netscape for standardization by ECMA (European Computer Manufacturer’s Association).

ES5

For most of 2010s, ES5 (version 5 of the ECMAScript) has been supported by all web browsers. It introduces the "strict mode" which is meant to correct the language's design "mistakes" in pre-ES5 versions.

From ES6 onwards

Since ES6 (released in 2015), the ECMAScript specification is released on yearly basis as ES2016, ES2017, and so on.

ESNext

When somebody refers to "ESNext", they are usually talking about the upcoming version of ECMAScipt.

References