Draft:Outline of JavaScript

{{Short description|High-level programming language}}

{{See also|Index of JavaScript-related articles}}

File:Javascript Logo.png

The following outline is provided as an overview of and topical guide to JavaScript:

{{Transclude lead excerpt| JavaScript | paragraphs=1 | more=no }}{{Cite web |date=2024-06-07 |title=JavaScript {{!}} History, Applications, & Facts {{!}} Britannica |url=https://www.britannica.com/technology/JavaScript |access-date=2024-07-12 |website=www.britannica.com |language=en}}

What ''type'' of thing is JavaScript?

File:JavaScript screenshot.png

JavaScript is an example of all of the following:

  • Programming language – formal computer language designed for writing programs to run on computers. JavaScript is mostly used for automating web pages, or making programs that work within web pages. Its capabilities include producing graphics, and manipulating text, HTML code, as well as CSS rules and elements.
  • High-level programming language – programming language more like human language and less tedious than machine code, providing features that standardize common tasks, permit rich debugging, and maintain machine independence. Rather than dealing with registers and memory addresses, JavaScript features variables, functions, and other abstract constructs, which makes it slower than machine code but much easier to write.
  • Dynamic programming language – class of high-level programming languages which execute certain programming behaviors as they run, making them more flexible than static programming languages (which perform those behaviors during compilation). For example, as with most scripting languages, JavaScript is dynamically typed: its types are associated with each value, rather than just with each expression. (E.g., a variable that is at one time bound to a number may later be re-bound to a string.{{cite web|url=https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures|title=JavaScript data types and data structures|website=MDN Web Docs}}).
  • Interpreted language – programming language for writing instructions that are executed directly by an interpreter, without compiling. This is what makes JavaScript programs platform independent; they are typically interpreted by the various JavaScript engines embedded in browsers.
  • Multi-paradigm programming language – programming language designed to allow programmers to use the most suitable programming style and associated language constructs for a given job, considering that no single paradigm solves all problems in the easiest or most efficient way. See Programming styles supported.
  • Object-based language – programming language that uses the idea of encapsulating state and operations inside "objects". Object-based languages need not support inheritance or subtyping, but those that do are also said to be "object-oriented", and include those which support a prototype-based programming style, like JavaScript, which do not have classes, but in which objects instead inherit their code and data directly from other "template" objects.
  • Scripting language – programming language that supports scripts. Scripts automate the execution of tasks that could alternatively be executed one-by-one by a human operator. Scripts are programs written for a special run-time environment; the main type of run-time environment that JavaScript programs are written for are browsers.
  • Untyped programming language – an untyped language, such as JavaScript, allows any operation to be performed on any data, which are generally considered to be sequences of bits of various lengths.{{cite web|url=http://www.acooke.org/comp-lang.html|author=Andrew Cooke|title=Introduction To Computer Languages|accessdate=13 July 2012}}

Names of JavaScript

= Etymology of JavaScript =

  • Etymology of JavaScript – the language was initially named Mocha, then changed to LiveScript, then renamed to JavaScript.
  • "Java" – the "Java" in "JavaScript" has caused confusion, implying a relation with the Java programming language. JavaScript is not a version, distribution, or spin-off of Java, though JavaScript did take inspiration from Java for its syntax. Netscape's naming JavaScript after Java has been characterized as a marketing ploy to take advantage of the popularity of the word "Java" at the time.
  • "Script" – the "Script" in "JavaScript" no longer describes the language accurately. While JavaScript started out as a scripting language, it has developed into a sophisticated multi-paradigmatic programming language, though it retains its scripting language functionality.

= Synonyms of JavaScript =

  • ECMAScript – the specification language upon which JavaScript is based. The terms EMCAScript and JavaScript are used interchangeably within the field. 'ES' has also been used as a prefix for shorthand names of versions of JavaScript:
  • 'ES5': ECMAScript Fifth Edition, adopted in 2009.
  • 'ES6' / 'ES2015': ECMAScript Sixth Edition, adopted in 2015.
  • 'ES7' / 'ES2016': ECMAScript Seventh Edition, adopted in 2016.
  • 'ES2017': ECMAScript Eighth Edition, adopted in 2017.
  • 'ES2018': ECMAScript 2018 – 9th Edition
  • 'ES2019': ECMAScript 2019 – 10th Edition
  • 'ES2020': ECMAScript 2020 – 11th Edition
  • 'ES2021': ECMAScript 2021 – 12th Edition
  • 'ES2022': ECMAScript 2022 – 13th Edition
  • 'ES2023': ECMAScript 2023 – 14th Edition
  • 'ES2024': ECMAScript 2024 – 15th Edition
  • JScript – essentially, "JavaScript for Internet Explorer". Microsoft reverse engineered JavaScript and then named the implementation JScript to avoid infringing upon Sun's ownership of the JavaScript trademark. Since then, Microsoft has switched over to using the name JavaScript to refer to the implementation of JScript used in its Edge browser.
  • Vanilla JavaScript or "Vanilla JS" – jargon for "plain JavaScript", that is, JavaScript not extended by any frameworks or additional libraries.

= JavaScript trademark =

  • Ownership of the JavaScript trademark – "JavaScript" as a trademark is technically owned by Oracle, which acquired Sun, which acquired NetScape, which created JavaScript and initially registered the trademark.
  • Non-enforcement of the JavaScript trademark – the trademark doesn't appear to be enforced, and may be indefensible. Many companies and individuals throughout the field are using it in their product names as a generic term, apparently without legal repercussions.

Uses of JavaScript

JavaScript can be used for:

Prerequisites for using JavaScript

= Equipment required for using JavaScript =

  • Computer – JavaScript is a programming language, so, of course you need a computer to use it
  • Web browser – scripts written in JavaScript reside on most webpages, which require a web browser to access. Most web browsers have a JavaScript engine built-in that run webpage scripts.

= Prerequisites to understanding JavaScript =

Prerequisites to understanding JavaScript – JavaScript is one of the three core technologies used for defining webpages. JavaScript is a complementary technology that works with HTML and CSS, amongst others. JavaScrpt refers to and modifies the markup, and therefore understanding these other languages is useful for writing JavaScript programs.

  • HTML (HyperText Markup Language) – standard markup language used to create the web pages (HTML files) that make up the World Wide Web and which are read and presented by web browsers. HTML provides a means to create structured documents by denoting structural semantics for text such as headings, paragraphs, lists, links, quotes and other items. HTML elements form the building blocks of HTML files ("HTML pages"), and JavaScript is used to dynamically change HTML pages by modifying their HTML elements or creating new ones.
  • CSS (Cascading Style Sheets) – style sheet language used for describing the presentation of a document written in a markup language (including HTML).{{Cite web|title = CSS developer guide|url = https://developer.mozilla.org/en-US/docs/Web/Guide/CSS|website = Mozilla Developer Network|accessdate = 2015-09-24}} CSS is designed primarily to enable the separation of document content from document presentation, including aspects such as the layout, colors, and fonts.{{cite web|title=What is CSS?|publisher=World Wide Web Consortium|url=http://www.w3.org/standards/webdesign/htmlcss#whatcss|accessdate=1 December 2010}} This separation can improve content accessibility, provide more flexibility and control in the specification of presentation characteristics, enable multiple HTML pages to share formatting by specifying the relevant CSS in a separate .css file, and reduce complexity and repetition in the structural content. JavaScript can dynamically modify CSS to change the presentation of web pages.

= Tools required for JavaScript programming =

Tools required for JavaScript programming – the only tool required for writing programs in JavaScript is a text editor, though other tools are very useful.

  • Text editor – program used for editing plain text files. JavaScript programs can be written in even the simplest text editor.
  • (For optional but useful tools, see JavaScript tools, below)

= Method of execution =

Method of execution – how a computer program is started. Typically, JavaScript programs are embedded within the HTML markup of a webpage, or called from within the HTML markup using a script call, and are executed automatically by the browser when it reads the webpage. Another method is the bookmarklet, which requires the user to click on it to execute. Various methods of execution for JavaScript programs include:

  • Methods of executing scripts in web browsers:
  • Embedding in webpage HTML
  • Script tags – a script is embedded in a webpage by including it between
  • Script call
  • Bookmarklet – technique of saving JavaScript within a bookmark or hyperlink, so that it can be executed by clicking on it. In many cases, the bookmarklet can be dragged and dropped to the browser toolbar for easier access. Here is an example bookmarklet:
  • JavaScript:name=prompt("What is your name?"); alert("Hello, " + name);
  • Installed as a browser extension – a browser extension is a plug-in that extends the functionality of a web browser in some way. Many browser extensions are written in JavaScript.
  • Installed as an add-on in Firefox – Firefox add-ons allow the user to add or augment application features, use themes to their liking, and handle new types of content. Many add-ons are written in JavaScript.
  • Installed as a userscript – JavaScript program written to modify web pages to augment browsing. They are installed in browsers by use of a userscript manager browser extension like Tampermonkey or Greasemonkey. A userscript feature is also available for registered users of Wikipedia, and can augment editing and viewing of that encyclopedia's pages.
  • As a bookmark – using the bookmarklet technique.
  • Methods of executing scripts in runtime environments:
  • Methods of executing scripts in other programs:

= JavaScript system requirements =

== Environment support for JavaScript ==

Environment support for JavaScript – where JavaScript can be run. This includes client-side support in browsers, server-side support in web servers, and runtime environments to provide support in operating systems on desktop computers and other machines.

  • On the World Wide Web – JavaScript may be executed at the web server (or "server-side") upon webpages (or to generate them) before they are sent to the client (the user's browser), or executed client-side by the client upon receipt of a webpage. Client-side JavaScript is typically embedded in the HTML of webpages.
  • Client-side environment support – this is achieved through client-side scripting. Client-side scripts are supported in:
  • Browsers – JavaScript can run in browsers that include a JavaScript engine (see below). JavaScript sourcecode that is embedded in a webpage's HTML is executed by the JavaScript engine in the browser automatically when the browser reads the page.
  • Server-side environment support – this is implemented through server-side scripting. Server-side scripts are supported in:
  • Web servers – JavaScript can run in web servers that include a JavaScript runtime environment (such as Node.js), or other server-side solution.
  • Local environment support – JavaScript can be used to write applications for use on end user computers, and those applications can be run using a JavaScript runtime environment, such as Node.js.
  • Operating systems support – JavaScript can run under any operating system that supports a JavaScript runtime environment, such as Node.js.

=== JavaScript engines ===

JavaScript engine  (list) – program or library which executes JavaScript code. A JavaScript engine may be a traditional interpreter, or it may utilize just-in-time compilation to bytecode in some manner.{{cite web |url=http://developer.telerik.com/featured/a-guide-to-javascript-engines-for-idiots/ |title=A Guide to JavaScript Engines for Idiots |last=Looper |first=Jen |publisher=Telerik Developer Network |date=2015-09-21 |accessdate=2016-03-17 }} A JavaScript engine is most commonly included in web browsers, but is also a key component of JavaScript runtime environments and other software (such as database management systems).

  • Chakra – JavaScript engine developed by Microsoft for its Microsoft Edge web browser. It is a fork of the JScript engine used in Internet Explorer.
  • SquirrelFish – bytecode interpreter rewritten from JavaScriptCore.
  • Nashorn – JavaScript engine developed in the Java programming language by Oracle. It is based on the Da Vinci Machine (JSR 292) and was released with Java 8. Its purposes are to enable embedding JavaScript in Java applications, and to develop standalone JavaScript applications.
  • Rhino – JavaScript engine written fully in Java and managed by the Mozilla Foundation as open source software. It is intended to be used in server-side applications, hence there is no built-in support for the Web browser objects that are commonly associated with JavaScript.
  • SpiderMonkey – the JavaScript engine in Firefox
  • Tamarin – still supported as part of Flash Player.
  • V8 – used in Google Chrome, Couchbase Server, MongoDB, and Node.js
  • Comparison of JavaScript engines
  • (For engines no longer actively developed or maintained, see Outmoded JavaScript engines)

=== JavaScript runtime environments ===

JavaScript runtime environments

  • Node.js – open-source, cross-platform JavaScript runtime environment for executing JavaScript code server-side, to produce dynamic web page content before the page is sent to the user's web browser. Node.js is built upon the Chrome V8 JavaScript engine.
  • Seed – interpreter and a library of the GNOME project to create standalone applications in JavaScript. It uses the JavaScript engine JavaScriptCore of the WebKit project.
  • Comparison of server-side JavaScript solutions

=== Other JavaScript-based solutions ===

  • CouchDB – server database that uses JavaScript as its query language.

Features of JavaScript

  • Universal web support – all modern Web browsers support JavaScript with a built-in JavaScript engine.

= JavaScript specifications and standards =

  • Main specifications
  • ECMAScript – standard specification originally based on JavaScript. Since ECMAScript's inception, JavaScript has followed that specification. While JavaScript aims to be compatible with ECMAScript, it also provides additional features not described in the ECMA specifications.{{cite web|url=http://javascript.about.com/od/reference/a/jscript.htm |title=JScript VS JavaScript |publisher=About.com |date=2015-11-25}}
  • CommonJS – project to create specifications for JavaScript beyond client-side scripting, to expand it into a more full-fledged language. For example, for writing server-side scripts and native desktop applications.
  • Asynchronous module definition (AMD) – API specification for JavaScript that defines code modules and their dependencies, and loads them asynchronously if desired.
  • Content Security Policy – computer security standard introduced to prevent cross-site scripting (XSS), clickjacking and other code injection attacks resulting from execution of malicious content in the trusted web page context.
  • JSGI – interface between web servers and JavaScript-based web applications and frameworks.

= Programming styles supported =

JavaScript supports the following programming paradigms:

  • Event-driven programming in JavaScript{{cite web|url=https://www.24hr.se/event-driven-programming-in-javascript/|title=Event driven programming (in javascript)|website=www.24hr.se}}event-driven programming is a programming paradigm in which the flow of the program is determined by events such as user actions (mouse clicks, key presses), sensor outputs, or messages from other programs/threads.
  • Declarative programming in JavaScript[http://www.tysoncadenhead.com/blog/the-state-of-javascript-a-shift-from-imperative-to-declarative#.WOu121favbg in JavaScript The State of JavaScript: a Shift from Imperative to Declarative]declarative programming focuses on what the program should accomplish rather than how it should be done. In this paradigm, programming is done with expressions or declarations instead of statements. It is the opposite of imperative programming.
  • Functional programming in JavaScript[https://medium.com/javascript-scene/master-the-javascript-interview-what-is-functional-programming-7f218c68b3a0 Master the JavaScript Interview: What is Functional Programming?])functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids changing-state and mutable data.
  • Imperative programming in JavaScriptimperative programming is an approach that implements algorithms in explicit steps, in the form of commands for the computer to perform. It uses statements that change a program's state. The focus is on how a program operates. Opposite of declarative programming.
  • Procedural programming
  • Structured programming in JavaScriptstructured programming is a programming style that makes extensive use of subroutines, block structures, for and while loops—in contrast to using simple tests and jumps such as the go to statement which could lead to "spaghetti code" causing difficulty to both follow and maintain. This improves the clarity, quality, and development time of programs.
  • Object-oriented programming in JavaScript{{cite web | url= http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf | title= ECMAScript Language Specification }}object-oriented programming is
  • Prototype-based programming in JavaScriptprototype-based programming is

= Components of the JavaScript language =

== JavaScript syntax ==

JavaScript syntax ([https://www.w3schools.com/js/js_syntax.asp see tutorial]) – set of rules that define correct structure for lines of code in a JavaScript program, such as when semicolons are needed at the end of a statement, whether or not letter case matters, where and how to use parentheses, what words are reserved as part of the language, the use of white space, the proper format for variable declarations, expressions, statements, functions, and so on.

== Data types in JavaScript ==

Data type (JavaScript) is a classification of data which defines the operations that can be done on the data, the meaning of the data, and the way values of that type can be stored.

  • Primitive data types in JavaScript ([https://www.codecademy.com/courses/primitives-development-course/6/1 see tutorial]) – The primitive data types in JavaScript are:
  • String
  • Number –
  • Boolean data type – data type having two values (usually denoted true and false). It is primarily associated with conditional statements, which allow different actions and change control flow depending on whether a programmer-specified Boolean condition evaluates to true or false.
  • Null pointer
  • Undefined –
  • Composite data types – the composite data types in JavaScript are arrays and objects (hashes).
  • Arrays in JavaScript ([http://www.w3schools.com/js/js_arrays.asp see tutorial])For further information, see Array data structure
  • Objects in JavaScript ([http://eloquentjavascript.net/06_object.html see tutorial]) – "object" in JavaScript means "associative array". Objects in JavaScript correspond to hashes in Perl.

== Variables in JavaScript ==

Variables in JavaScript[http://webcheatsheet.com/javascript/variables.php Tutorial on variables in JavaScript])a variable is a storage location paired with an associated symbolic name (an identifier), which contains some known or unknown quantity of information referred to as a value. They correspond to variables in mathematics, but aren't limited to representing just numbers.

== Operators in JavaScript ==

Operators in JavaScript[http://www.quackit.com/javascript/tutorial/javascript_operators.cfm List of operators])an operator is

== Expressions in JavaScript ==

== Statements in JavaScript ==

Statements in JavaScript[http://help.dottoro.com/ljqepqhd.php]a statement is the smallest standalone element in a programming language that expresses some action to be carried out. Statements are instructions that command the computer to perform a specified action.

== Functions in JavaScript ==

Functions in JavaScript[http://www.javascriptkit.com/javatutors/primer6.shtml] – in JavaScript, subroutines are called "functions". A subroutine is a sequence of program instructions that perform a specific task, packaged as a unit. This unit can then be used (and reused) in the program wherever that particular task needs to be performed.

== Classes in JavaScript ==

Classes in JavaScript[https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes Classes]a class is

== Modules in JavaScript ==

Modules in JavaScript[https://medium.freecodecamp.com/javascript-modules-a-beginner-s-guide-783f7d7a5fcc#.b6x0m3h1a JavaScript Modules: A Beginner's Guide]a module is

== Regular expressions in JavaScript ==

Regular expressons in JavaScript[http://eloquentjavascript.net/09_regexp.html Tutorial on regular expressions in JavaScript]a regular expression (regex) is See regular expression syntax in JavaScript.

== Values in JavaScript ==

== Event-handling in JavaScript ==

=== Cookies ===

== Objects in JavaScript ==

=== Number ===

=== Boolean ===

=== String ===

=== Arrays ===

=== Date ===

=== Math ===

== Asynchronicity in JavaScript ==

== DOM manipulation in JavaScript ==

  • DOM – this stands for Document Object Model, the hierarchy (tree) produced by the browser of all the elements of a webpage. By processing the DOM via "methods" (functions stored as object properties, that is, the actions that can be performed on objects), JavaScript can dynamically change the page's HTML{{cite web|url=https://www.w3schools.com/js/js_htmldom.asp|title=JavaScript HTML DOM|website=www.w3schools.com}}, such as:

= Server-side scripting features =

= Client-side scripting features =

JavaScript resources

= JavaScript approaches =

  • Ajax "(asynchronous JavaScript and XML)" – set of web development techniques using many web technologies on the client-side to create asynchronous Web applications. With Ajax, web applications can send data to and retrieve from a server asynchronously (in the background) without interfering with the display and behavior of the existing page. By decoupling the data interchange layer from the presentation layer, Ajax allows for web pages, and by extension web applications, to change content dynamically without the need to reload the entire page.
  • Dynamic HTML – predecessor of Unobtrusive JavaScript.
  • JavaScript templating
  • JSONP
  • Remote scripting
  • Unobtrusive JavaScript

= JavaScript programming techniques =

  • Bookmarklet – technique of saving JavaScript within a bookmark or hyperlink, so that it can be executed by clicking on it. In many cases, the link can be dragged and dropped to the browser toolbar for easier access.
  • HTML scripting – how locally executable scripts (such as those written in JavaScript) may be used in a web page.
  • Lazy initialization
  • Mutator method

= JavaScript extensions =

== JavaScript frameworks ==

=== JavaScript client-side frameworks ===

=== JavaScript server-side frameworks ===

=== Both-side frameworks ===

  • AngularJS ([https://www.w3schools.com/angular/default.asp see tutorial])
  • Jasmine – open source testing framework for JavaScript.
  • PureMVC

== JavaScript libraries ==

JavaScript library   (list) –

  • jQuery [http://jquery.com/] – cross-platform library designed to simplify the client-side scripting of HTML.{{cite web|url=//jquery.com/|title=jQuery: The write less, do more, JavaScript library|publisher=The jQuery Project|accessdate=29 April 2010}} jQuery is the most popular JavaScript library in use today, with installation on 65% of the top 10 million highest-trafficked sites on the Web.{{cite web |url=http://w3techs.com/technologies/overview/javascript_library/all |title=Usage of JavaScript libraries for websites|accessdate=2015-07-14}}{{cite web |url=http://trends.builtwith.com/javascript/JQuery |title=jQuery Usage Statistics|accessdate=2013-05-17}}{{cite web|url=http://libscore.com/#libs|title=Libscore|publisher=}} jQuery is free, open-source software licensed under the MIT License.
  • JavaScript graphics library
  • JavaScript Data Components
  • jsMath
  • Lightbox
  • SWFObject
  • SWFAddress
  • Underscore.js

== JavaScript webpage components ==

JavaScript webpage component – a JavaScript program that becomes part of a webpage.

  • Ace (editor) – standalone code editor written in JavaScript that can be easily embedded in any web page and JavaScript application.
  • Aloha Editor – open source WYSIWYG editor, written in JavaScript, that can be used in webpages to provide editing of content within the same layout that is shown to readers.
  • CodeMirror – provides a code editor in the browser
  • CKEditor – open source WYSIWYG text editor designed to bring common word processor features directly to web pages, simplifying their content creation. Its core code is written in JavaScript.
  • ContentTools – open-source WYSIWYG editor for HTML content, to make editable regions in webpages. It is written in JavaScript/CoffeeScript.
  • Epoch JavaScript Calendar

= JavaScript tools =

JavaScript tool

  • Bookmarklet – bookmark or hyperlink that contains JavaScript, and runs when you click on it. Can be dragged and dropped onto the toolbar for ease of access.
  • Browserify ([http://browserify.org/ site]) –
  • Closure compiler ([https://developers.google.com/closure/compiler/ site]) –
  • Emscripten – source-to-source compiler that translates sourcecode into a subset of JavaScript known as asm.js
  • Ubiquity – add-on for Firefox that provides access to commands written in JavaScript or Python.
  • iMacros – Macro extension to Firefox in which the macros can include JavaScript.
  • JSDoc

== Task runners ==

== Debugging tools ==

  • Linters – a lint or linter is a software tool that analyzes source code to flag programming errors, bugs, stylistic errors, and suspicious constructs.
  • JSHint
  • JSLint
  • JSONLint [https://jsonlint.com] –
  • Firebug – free and open-source add-on for Mozilla Firefox for live debugging, editing, and monitoring any website's CSS, HTML, DOM, XHR, and JavaScript.
  • JavaScript Console
  • Venkman

== Editors that support writing JavaScript ==

  • Ace – free and open source standalone code editor written in JavaScript that can easily be embedded in any web page or JavaScript application.
  • Alphatk – proprietary editor that runs on any platform that Tk runs on (ie., most).
  • Aquamacs – free Emacs editor for use on Mac OS X.
  • Arachnophilia
  • Atom – free and open-source text and source code editor for macOS, Linux, and Microsoft Windows with support for plug-ins written in Node.js, and embedded Git Control, developed by GitHub. Atom is a desktop application built using web technologies, written in CoffeeScript and Less.
  • BBEdit – commercial sourcecode editor designed for software developers and web designers on Mac OS X.
  • CodeMirror – free and open source code-editor component that can be embedded in Web pages. It has a rich programming API and a focus on extensibility.
  • Notepad++ – free versatile text editor for Windows operating system.
  • SlickEdit
  • Sublime Text
  • Vim (text editor)
  • Visual Studio Code – includes intelligent code completion for JavaScript, JSON, and TypeScript, as well as debugging features for JavaScript, TypeScript, and Node.js.
  • Comparison of text editors
  • Comparison of JavaScript-based source code editors

== Online cloud JS editors ==

== Integrated development environments for JavaScript ==

== Testing software ==

= JavaScript-based software =

== Free software programmed in JavaScript ==

= JavaScript derivatives =

== JavaScript-inspired data formats ==

  • JSON (JavaScript Object Notation) –

== JavaScript-inspired programming languages ==

JavaScript dialects – programming languages based on JavaScript, or the ECMA specification:

= Languages that transcompile to JavaScript =

= Online JavaScript learning resources =

: For many more books and webpages on JavaScript, see #Further reading, below

  • Codecademy ([https://www.codecademy.com/learn/learn-javascript free JavaScript course]) – online interactive platform that offers free coding classes in 12 different programming languages including JavaScript (jQuery, AngularJS, and React.js), as well as the markup language HTML, and CSS.
  • Coursera ([https://www.coursera.org/courses?languages=en&query=JavaScript JavaScript courses]) – offers MOOC courses, some accessible for free.
  • freeCodeCamp ([https://www.freecodecamp.com/map site]) – non-profit interactive learning web platform to make learning web development including JavaScript accessible to anyone.
  • Khan Academy ([https://www.khanacademy.org/computing/computer-programming JS courses]) – non-profit educational organization with the mission "to provide a free, world-class education to anyone, anywhere", by providing free video courses and instructional materials online.
  • Mozilla Developer Network ([https://developer.mozilla.org/en-US/ site]) – official Mozilla website for development documentation of web standards and Mozilla projects. It is a resource for developers, maintained by the community of developers and technical writers and hosting many documents on a wide variety of subjects, such as: HTML5, JavaScript, CSS, Web APIs and Node.
  • OpenClassrooms ([https://openclassrooms.com/courses?q=JavaScript JavaScript courses]) –
  • W3Schools ([https://www.w3schools.com/ site])– popular web site for learning web technologies online, including tutorials and reference material for JavaScript, jQuery, AngularJS, JSON, Ajax, and W3.js.

= JavaScript publications =

: For free online publications, see #Further reading, below

= JavaScript news =

  • http://www.echojs.com/
  • https://cooperpress.com/ publishes JavaScript newsletters
  • JavaScript weekly
  • http://www.webplatformdaily.org/
  • http://www.flippinawesome.org/category/news/best-of/ weekly list

History of JavaScript

History of JavaScript

  • History of Netscape – company that created JavaScript.
  • Netscape Navigator – first browser to support JavaScript.
  • Netscape Enterprise Server – first server-side solution to support JavaScript.
  • Brendan Eich – creator of JavaScript, as an employee of NetScape.
  • Browser wars – fierce competition between browsers since their inception.
  • First Browser War – browser war between NetScape Navigator and Microsoft Internet Explorer in the 1990s. JavaScript was released during the flurry of development of new features inspired by that war.
  • JScript – Microsoft's legacy dialect of the ECMAScript standard that is used in Microsoft's Internet Explorer web browser. It was reverse engineered from JavaScript, and first supported in the Internet Explorer 3.0 browser released in August 1996.
  • History of ECMAScript
  • ECMAScript version history
  • JavaScript Style Sheets – was a stylesheet language technology proposed by Netscape Communications in 1996 to provide facilities for defining the presentation of webpages.
  • Sputnik – was a JavaScript conformance test suite for ECMA-262 (5th edition), developed in Russia.

= Milestones =

  • 1995
  • Sun Microsystems and Netscape announced JavaScript in a press release.{{cite web|url=http://wp.netscape.com/newsref/pr/newsrelease67.html |archiveurl=https://web.archive.org/web/20070916144913/http://wp.netscape.com/newsref/pr/newsrelease67.html |archivedate=2007-09-16 |title=Netscape and Sun Announce JavaScript, the Open, Cross-platform Object Scripting Language for Enterprise Networks and the Internet |publisher=Netscape |date=December 4, 1995 |accessdate=2013-10-31}}
  • 1996
  • Netscape Navigator 2.0 was released in March, featuring support for JavaScript.
  • JScript released in August, as part of IE 3.0.

= Influences =

= Version history =

= Outmoded JavaScript engines =

JavaScript security issues

= JavaScript security techniques =

JavaScript community

= JavaScript organizations =

= Persons influential in JavaScript =

See also

= Articles with a JavaScript section =

  1. ?:
  2. AES implementations
  3. Adobe AIR
  4. Anonymous function
  5. Anonymous recursion
  6. Apply
  7. Aptana
  8. Bootstrap (front-end framework)
  9. COLT (software)
  10. CSS hack
  11. CaRMetal
  12. Callback (computer programming)
  13. CartoDB
  14. Code cleanup
  15. Command pattern
  16. Comment (computer programming)
  17. Comparison of application servers
  18. Comparison of integrated development environments
  19. Comparison of programming languages (list comprehension)
  20. Comparison of programming languages (string functions)
  21. Comparison of web browsers
  22. Comparison of web frameworks
  23. Data URI scheme
  24. Dispatch table
  25. Document Object Model
  26. Double-precision floating-point format
  27. EXeLearning
  28. Earley parser
  29. Escape character
  30. Eval
  31. Event-driven architecture
  32. Exception handling syntax
  33. File select
  34. Fluent interface
  35. Foreach loop
  36. Foundation (framework)
  37. Front-end web development
  38. Generational list of programming languages
  39. Google Chrome Experiments
  40. Google PageSpeed Tools
  41. Higher-order function
  42. Holy Grail (web design)
  43. Immutable object
  44. InstallCore
  45. Internet Explorer 9
  46. Iterator pattern
  47. Java virtual machine
  48. Label (computer science)
  49. Leet (programming language)
  50. Libffi
  51. List of 3D graphics libraries
  52. List of Ajax frameworks
  53. List of charting software
  54. List of content management systems
  55. List of performance analysis tools
  56. List of unit testing frameworks
  57. List of wiki software
  58. Midpoint circle algorithm
  59. Mobile web analytics
  60. Module pattern
  61. Molecule editor
  62. Mouse tracking
  63. Naming convention (programming)
  64. Null Object pattern
  65. Open Data Protocol
  66. Opera Mini
  67. Otsu's method
  68. PhpStorm
  69. Property (programming)
  70. RTP-MIDI
  71. Reverse domain name notation
  72. Scope (computer science)
  73. Shamir's Secret Sharing
  74. Single-page application
  75. Software transactional memory
  76. String interpolation
  77. Template Attribute Language
  78. This (computer programming)
  79. Time zone
  80. Tor Mail
  81. UI data binding
  82. URL redirection
  83. Vehicle identification number
  84. Virtual world framework
  85. WSO2 Mashup Server
  86. Web development tools
  87. Web scraping
  88. WebKit
  89. Windows Runtime
  90. Yesod (Web framework)

Further reading

= Free =

== General reference ==

  • Glossaries
  • [https://www.codecademy.com/articles/glossary-javascript Codecademy JavaScript Glossary]
  • [https://developer.mozilla.org/en-US/docs/Glossary MDN JavaScript Glossary] (extensive, link-intensive)
  • [http://jargon.js.org/ Simplified JavaScript Jargon] – with brief definitions, and links to more in-depth explanations.
  • [https://google.github.io/styleguide/jsguide.html Google JavaScript Style Guide] – Google’s coding standards for source code in JavaScript
  • [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide JavaScript Guide] – programmer's manual, from the Mozilla Developer Network
  • [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference JavaScript reference] – describes the language in detail. From the Mozilla Developer Network.
  • [http://htmldog.com/guides/javascript/ JavaScript tutorials] – beginner, intermediate, and advanced
  • JavaScript Best Practices – general tips on better scripting
  • [https://www.thinkful.com/learn/javascript-best-practices-1/ Part 1]
  • [https://www.thinkful.com/learn/javascript-best-practices-2/ Part 2]
  • [http://jstherightway.org/ JavaScript the Right Way] – extensive bibliography of online resources (links) for JavaScript, arranged by subject
  • [http://javascriptissexy.com/how-to-learn-javascript-properly/ How to Learn JavaScript Properly] – provides study guides for beginner and experienced JavaScript programmers, listing many resources

== Beginner ==

  • [https://en.wikibooks.org/wiki/JavaScript JavaScript WikiBook] – community-written introductory-level book on JavaScript, from Wikibooks
  • [https://en.wikiversity.org/wiki/JavaScript Wikiversity JavaScript lessons] – lessons on JavaScript, collaboratively written by the community
  • [https://www.gitbook.com/download/pdf/book/gitbookio/javascript Learn JavaScript] – covers the very basics of JavaScript
  • [https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript A re-introduction to JavaScript (JS tutorial)] – when you are ready for a second go.
  • [https://shanrkysoft.com/archive/1997/jsa/content/039.html JavaScript Terminology For Beginners] – 5 key features of the language
  • [http://eloquentjavascript.net/ Eloquent JavaScript] ([http://eloquentjavascript.net/Eloquent_JavaScript.pdf pdf]) – introduction to both JavaScript and programming in general, for beginners
  • [http://jsforcats.com/ JavaScript for Cats] ([http://jsforcats.com/javascript-for-cats.pdf pdf]) – easy for humans too
  • [https://www.w3schools.com/js/ JavaScript Tutorial] – from w3schools.com
  • [http://jqfundamentals.com/legacy/ jQuery Fundamentals] – overview of the jQuery JavaScript library, which teaches the beginner to use it to program basic tasks
  • [http://jqfundamentals.com/ jQuery Fundamentals tutorial] – tutorial with built-in editor, and examples that the reader can experiment with
  • [http://speakingjs.com/es5/ Speaking JavaScript: An In-depth Guide for Programmers] – assumes you already know another object-oriented programming language

== Intermediate ==

  • [http://read.humanjavascript.com/ch00-foreword.html Human JavaScript] – "tools, patterns, and approaches optimized for people"
  • [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript Introduction to Object-Oriented JavaScript] – from the Mozilla Developer Network
  • [https://ia800308.us.archive.org/29/items/JavascriptAllonge/JavascriptAllonge.pdf JavaScript Allongé (ES5)] – explains the language, and how it works, with a focus on functions
  • [https://bonsaiden.github.io/JavaScript-Garden/ JavaScript Garden] – collection of tips and documentation on JavaScript's quirks
  • [https://addyosmani.com/resources/essentialjsdesignpatterns/book/ Learning JavaScript Design Patterns] – reusable solutions to commonly occurring problems in software design.
  • [https://www.gitbook.com/download/pdf/book/drboolean/mostly-adequate-guide Professor Frisby's Mostly Adequate Guide to Functional Programming] (in JavaScript)
  • [https://leanpub.com/understandinges6/read Understanding ECMAScript 6] – covers the core of the language in greater depth, and explains the differences between ECMAScript5 and ECMAScript6.
  • [https://github.com/getify/You-Dont-Know-JS/blob/master/README.md You Don't Know JS] (series) – JS stands for JavaScript, not the other thing. Covers the language in depth. The pre-release versions were made available by the author for free:
  • [https://github.com/getify/You-Dont-Know-JS/blob/master/up%20&%20going/README.md#you-dont-know-js-up--going You Don't Know JS: Up & Going]
  • [https://github.com/getify/You-Dont-Know-JS/blob/master/types%20&%20grammar/README.md#you-dont-know-js-types--grammar You Don't Know JS: Types & Grammar]
  • [https://github.com/getify/You-Dont-Know-JS/blob/master/scope%20&%20closures/README.md#you-dont-know-js-scope--closures You Don't Know JS: Scope & Closures]
  • [https://github.com/getify/You-Dont-Know-JS/blob/master/this%20&%20object%20prototypes/README.md#you-dont-know-js-this--object-prototypes You Don't Know JS: this & Object Prototypes]
  • [https://github.com/getify/You-Dont-Know-JS/blob/master/async%20&%20performance/README.md#you-dont-know-js-async--performance You Don't Know JS: Async & Performance]
  • [https://github.com/getify/You-Dont-Know-JS/blob/master/es6%20&%20beyond/README.md#you-dont-know-js-es6--beyond You Don't Know JS: ES6 & Beyond]

== Advanced ==

  • [https://github.com/spencertipping/js-in-ten-minutes/blob/master/js-in-ten-minutes.pdf JavaScript in Ten Minutes] – Overview of the advanced features, for programmers who know some JavaScript
  • [http://exploringjs.com/es2016-es2017/index.html Exploring ES2016 and ES2017] – what's new in ECMAScript 2016 and ECMAScript 2017 (ECMAScript is the standard specification that JavaScript follows)
  • [http://chimera.labs.oreilly.com/books/1234000000262/index.html Programming JavaScript Applications]
  • [https://github.com/raganwald/javascript-spessore/blob/master/published/javascript-spessore.pdf JavaScript Spessore] – developing apps with a focus on objects and metaobjects

== Extension-based ==

= Commercial =

== General reference ==

== Beginner ==

  • {{cite book | title = Beginning JavaScript | edition = 5th | first1 = Jeremy | last1 = McPeak | first2 = Paul | last2 = Winton | ISBN = 978-1-118-90374-2 | publisher = John Wiley & Sons | year = 2015 | url = https://www.wiley.com/en-us/Beginning+JavaScript%2C+5th+Edition-p-9781118903742 }}
  • {{cite book | title = JavaScript Absolute Beginner’s Guide | first1 = Kirupa | last1 = Chinnathambi | ISBN = 978-0-7897-5806-4 | publisher = Pearson Education | year = 2017 | url = https://www.pearson.com/us/higher-education/program/Chinnathambi-Java-Script-Absolute-Beginner-s-Guide/PGM334353.html }}

== Intermediate ==

  • {{cite book | title = JavaScript: The Good Parts |ISBN=978-0-596-51774-8 | oclc =192027457 | publisher = O'Reilly | year = 2008 | url = http://oreilly.com/catalog/9780596517748/ }}.

== Advanced ==

  • JavaScript Application Design: A Build First approach, Nicolas G. Bevacqua, Manning Publications, 2015. {{ISBN|9781617291951}}, 344 pages

References

{{Reflist}}