JavaScript

JavaScript (sometimes abbreviated JS) is a scripting language commonly implemented as part of a web browser in order to create enhanced user interfaces and dynamic websites, but also used in other contexts (such as server-side JavaScript). As a client-side language in a browser, JavaScript has access to a Document Object Model (DOM) which permits it to read and modify various aspects of the current web page.

This is not the same as Java. People constantly get confused about that.

JavaScript was originally developed at Netscape by Brendan Eich (who later became Mozilla CEO... very briefly), where it was originally called LiveScript while under development, but became JavaScript (with the name licensed from Sun) in order to capitalize on the popularity of Java, though the languages aren't really related (although there are some similarities in syntax). Later, a Microsoft implementation designed to be (more or less) compatible was called JScript, and an attempt at a formally standardized version of the language was published by ECMA as ECMAScript.

The node.js runtime environment is (mostly) implemented in JavaScript, as are applications running within it. It made JavaScript into a server-side language in addition to its traditional uses as a client-side language.

TypeScript is an extension of JavaScript with strong typing, which compiles into regular JavaScript.

React is an extension of JavaScript to support various methods of creating HTML elements and interacting with them, including embedding code resembling (but not quite identical to) HTML. This is another variant which is compiled into regular JavaScript for browser use.

Due to its status as the only scripting language for browsers, JavaScript skyrocketed in popularity in the 2000's and 2010's and as of 2017 serves as a lingua franca of Web development. Arguably, it is currently the world's most popular programming language (it tops GitHub and StackOverflow currently). A number of other languages have implementations that compile into JavaScript.

Documentation, Reference, and Programming Tips

 * Mozilla JavaScript reference
 * Table of how various zero, null, and infinity values are treated by various JavaScript operators
 * Screencast: Debugging an Ember.js Application

Programs and libraries

 * JSMESS: JavaScript-based in-browser emulator of classic computers
 * pepper.js
 * asm.js: subset of JavaScript to serve as target for compilers
 * An examination of asm.js (stripped-down subset of JavaScript designed to run faster)
 * ember.js framework (for creating web apps)
 * gamepad.js: use gamepads and joysticks with a browser
 * Some incredibly useful JavaScript: Add fart sounds to your web page!
 * BridgeIt: JavaScript library to add native mobile features to web apps
 * sql.js: Port of SQLite to JavaScript
 * Realistic terrain in 130 lines of JavaScript
 * First person game engine in 265 lines of JavaScript
 * 40+ essential JavaScript tools for the Web
 * ScriptCraft: Write Minecraft plugins in JavaScript
 * VanillaJS framework
 * New JavaScript library brings Java to browsers without applets

Other links and references

 * JavaScript (Wikipedia)
 * JavaScript video lectures by Douglas Crockford
 * Using Javascript to Keep Us Safe From Terrorists
 * Web-based distributed computing project using JavaScript to solve chess problem
 * Tessel: JavaScript right on the hardware
 * Asm.js: Ending The Ice Age of JavaScript
 * How many of you support users with no JS?
 * CodeCombat: Learn to code JavaScript by playing a game
 * The Birth and Death of JavaScript (future-history video)
 * Introducing the WebKit FTL JIT
 * Google and JavaScript
 * The Origin of Javascript with Brendan Eich (Podcast)
 * Isomorphic JavaScript
 * Eloquent Jvascript (free online book)
 * The path to parallel JavaScript
 * Javascript For Heterosexuals... Now with code examples. (Some background, and an official statement.)
 * The Origin of Javascript with Brendan Eich (podcast)