JavaScript

{{language|JavaScript |strength=weak |express=implicit |checking=dynamic |gc=yes |parampass=value |LCT=yes |bnf=http://javascript.comsci.us/syntax/statement/bnf.html}}{{language programming paradigm|Object-oriented}}{{language programming paradigm|functional}} '''JavaScript''' is the name of Netscape Communications Corporation's implementation of the [[ECMAScript standard]], a scripting language based on the concept of prototype-based programming. The language is best known for its use in websites (as client-side JavaScript), but is also used to enable scripting access to objects embedded in other applications.

Despite the name, JavaScript is only distantly related to the [[Java]] programming language, the main similarity being their common debt to the [[C]] syntax. Semantically, JavaScript syntax has far more in common with the [[Self]] [[programming language]].

JavaScript is a registered trademark of [[Sun Microsystems]], Inc. It was used under license for technology invented and implemented by Netscape Communications and current entities such as the Mozilla Foundation.

Major browsers have generally implemented the features of ECMASScript 5 (ES5), and have started to adopt elements of ES6. Updates to implementation of ES6 features are tabulated here: [https://kangax.github.io/compat-table/es6/ https://kangax.github.io/compat-table/es6/]

Once largely confined to browser environments, and typically isolated from access to system resources, JavaScript (and particularly the cross-platform [https://nodejs.org/en/ Node.js runtime environment]) is now very widely used in server-side and application scripting environments, with full access to local file systems and other OS resources.

At the same time, mainly because of JavaScript's role in the web, there is a growing number of other languages which [https://github.com/jashkenas/coffeescript/wiki/list-of-languages-that-compile-to-js compile to JavaScript].

The inclusion of '''tail-call optimisation''' in the ES6 standard reflects increased interest in functional approaches to the composition of JavaScript code, expressed for example, in significant adoption of libraries like Underscore and Lodash. If ES6 tail-call optimisation is widely implemented by JavaScript engines (so far this has mainly been achieved only by Apple's Safari engine) it will make JavaScript a more efficient and more natural environment for coding in a functional idiom.

==Citations==

  • [[wp:Javascript|Wikipedia:Javascript]]
  • [https://nodejs.org/en/ Node.js] Event-driven I/O server-side JavaScript environment based on V8
  • [https://www.npmjs.com npm – Node.js Package Manager] Claims to be the largest ecosystem of open source libraries in the world
  • [https://developer.apple.com/library/mac/releasenotes/InterapplicationCommunication/RN-JavaScriptForAutomation/Articles/Introduction.html OS X JavaScript for Applications] JavaScript as an OS X scripting language – supported by the Safari debugger
  • [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Shells Other JavaScript shells] List maintained by Mozilla
  • [https://github.com/jashkenas/coffeescript/wiki/list-of-languages-that-compile-to-js List of languages that compile to JS] maintained on Github by Jeremy Ashenas – author of CoffeeScript, Underscore and Backbone
  • [http://shop.oreilly.com/product/0636920028857.do Functional JavaScript] – Michael Fogus, O'Reilly 2013

Tasks