Javascript Wiki
Javascript Wiki
JSON
ECMAScript
vte
JavaScript (/ˈdʒɑːvəˌskrɪpt/),[8] often abbreviated as JS, is a
high-level, interpreted programming language that conforms to the
ECMAScript specification. It is a language that is also
characterized as dynamic, weakly typed, prototype-based and
multi-paradigm.
Contents
1 History
1.1 Beginnings at Netscape
1.2 Server-side JavaScript
1.3 Adoption by Microsoft
1.4 Standardization
1.5 Later developments
2 Trademark
3 Features
3.1 Universal support
3.2 Imperative and structured
3.3 Dynamic
3.4 Prototype-based (object-oriented)
3.5 Functional
3.6 Delegative
3.7 Miscellaneous
3.8 Vendor-specific extensions
4 Syntax
4.1 Simple examples
4.2 More advanced example
5 Use in Web pages
5.1 Example script
5.2 Compatibility considerations
6 Security
6.1 Cross-site vulnerabilities
6.2 Misplaced trust in the client
6.3 Misplaced trust in developers
6.4 Browser and plugin coding errors
6.5 Sandbox implementation errors
6.6 Hardware vulnerabilities
7 Uses outside Web pages
7.1 Embedded scripting language
7.2 Scripting engine
7.3 Application platform
8 Development tools
9 Benchmark tools for developers
10 Version history
11 Related languages and technologies
11.1 Use as an intermediate language
11.2 JavaScript and Java
11.3 WebAssembly
12 See also
13 References
14 Further reading
15 External links
History
Beginnings at Netscape
In 1993, the National Center for Supercomputing Applications
(NCSA), a unit of the University of Illinois at Urbana-Champaign,
released NCSA Mosaic, the first popular graphical Web browser,
which played an important part in expanding the growth of the
nascent World Wide Web beyond the NeXTSTEP niche where the
WorldWideWeb had formed three years earlier. In 1994, a company
called Mosaic Communications was founded in Mountain View,
California and employed many of the original NCSA Mosaic authors
to create Mosaic Netscape. However, it intentionally shared no
code with NCSA Mosaic. The internal codename for the company's
browser was Mozilla, which stood for "Mosaic killer", as the
company's goal was to displace NCSA Mosaic as the world's number
one web browser. The first version of the Web browser, Mosaic
Netscape 0.9, was released in late 1994. Within four months it
had already taken three-quarters of the browser market and became
the main web browser for the 1990s. To avoid trademark ownership
problems with the NCSA, the browser was subsequently renamed
Netscape Navigator in the same year, and the company took the
name Netscape Communications. Netscape Communications realized
that the Web needed to become more dynamic. Marc Andreessen, the
founder of the company believed that HTML needed a "glue
language" that was easy to use by Web designers and part-time
programmers to assemble components such as images and plugins,
where the code could be written directly in the Web page markup.
Although it was developed under the name Mocha, the language was
officially called LiveScript when it first shipped in beta
releases of Netscape Navigator 2.0 in September 1995, but it was
renamed JavaScript[2] when it was deployed in the Netscape
Navigator 2.0 beta 3 in December.[16] The final choice of name
caused confusion, giving the impression that the language was a
spin-off of the Java programming language, and the choice has
been characterized[17] as a marketing ploy by Netscape to give
JavaScript the cachet of what was then the hot new Web
programming language.
Server-side JavaScript
In December 1995, soon after releasing JavaScript for browsers,
Netscape introduced an implementation of the language for server-
side scripting with Netscape Enterprise Server.[23]
Adoption by Microsoft
Microsoft script technologies including VBScript and JScript were
released in 1996. JScript, a reverse-engineered implementation of
Netscape's JavaScript, was part of Internet Explorer 3. JScript
was also available for server-side scripting in Internet
Information Server. Internet Explorer 3 also included Microsoft's
first support for CSS and various extensions to HTML, but in each
case the implementation was noticeably different from that found
in Netscape Navigator at the time.[26][27] These differences made
it difficult for designers and programmers to make a single
website work well in both browsers, leading to the use of "best
viewed in Netscape" and "best viewed in Internet Explorer" logos
that characterized these early years of the browser wars.[28]
JavaScript began to acquire a reputation for being one of the
roadblocks to a cross-platform and standards-driven Web. Some
developers took on the difficult task of trying to make their
sites work in both major browsers, but many could not afford the
time.[26] With the release of Internet Explorer 4, Microsoft
introduced the concept of Dynamic HTML, but the differences in
language implementations and the different and proprietary
Document Object Models remained and were obstacles to widespread
take-up of JavaScript on the Web.[26]
Standardization
In November 1996, Netscape submitted JavaScript to ECMA
International to carve out a standard specification, which other
browser vendors could then implement based on the work done at
Netscape. This led to the official release of the language
specification ECMAScript published in the first edition of the
ECMA-262 standard in June 1997, with JavaScript being the most
well known of the implementations. ActionScript and JScript were
other well-known implementations of ECMAScript.
While all of this was happening, the open source and developer
communities set to work to revolutionize what could be done with
JavaScript. This community effort was sparked in 2005 when Jesse
James Garrett released a white paper in which he coined the term
Ajax, and described a set of technologies, of which JavaScript
was the backbone, used to create web applications where data can
be loaded in the background, avoiding the need for full page
reloads and leading to more dynamic applications. This resulted
in a renaissance period of JavaScript usage spearheaded by open
source libraries and the communities that formed around them,
with libraries such as Prototype, jQuery, Dojo Toolkit, MooTools,
and others being released.
In June 2011, ECMAScript 5.1 was released to fully align with the
third edition of the ISO/IEC 16262 international standard.
ECMAScript 2015 was released in June 2015. ECMAScript 2016 was
released in June 2016. The current version is ECMAScript 2017,
released in June 2017.[3]
Later developments
JavaScript has become one of the most popular programming
languages on the Web. However, many professional programmers
initially denigrated the language due to the perceived target
audience of Web authors and other such "amateurs".[30] The advent
of Ajax returned JavaScript to the spotlight and brought more
professional programming attention. The result was a
proliferation of comprehensive frameworks and libraries, improved
JavaScript programming practices, and increased usage of
JavaScript outside Web browsers, as seen by the proliferation of
Server-side JavaScript platforms.
In January 2009, the CommonJS project was founded with the goal
of specifying a common standard library mainly for JavaScript
development outside the browser.[31]
Trademark
"JavaScript" is a trademark of Oracle Corporation in the United
States.[32] It is used under license for technology invented and
implemented by Netscape Communications and current entities such
as the Mozilla Foundation.[33]
Features
The following features are common to all conforming ECMAScript
implementations, unless explicitly specified otherwise.
Universal support
All popular modern Web browsers support JavaScript with built-in
interpreters.
Dynamic
Typing
JavaScript is dynamically typed like most other scripting
languages. A type is associated with a value rather than an
expression. For example, a variable initially bound to a number
may be reassigned to a string.[35] JavaScript supports various
ways to test the type of objects, including duck typing.[36]
Run-time evaluation
JavaScript includes an eval function that can execute statements
provided as strings at run-time.
Prototype-based (object-oriented)
JavaScript is almost entirely object-based. In JavaScript, an
object is an associative array, augmented with a prototype (see
below); each string key provides the name for an object property,
and there are two syntactical ways to specify such a name: dot
notation (obj.x = 10) and bracket notation (obj['x'] = 10). A
property may be added, rebound, or deleted at run-time. Most
properties of an object (and any property that belongs to an
object's prototype inheritance chain) can be enumerated using a
for...in loop.
Prototypes
JavaScript uses prototypes where many other object-oriented
languages use classes for inheritance.[37] It is possible to
simulate many class-based features with prototypes in JavaScript.
[38]
Functions as object constructors
Functions double as object constructors, along with their typical
role. Prefixing a function call with new will create an instance
of a prototype, inheriting properties and methods from the
constructor (including properties from the Object prototype).[39]
ECMAScript 5 offers the Object.create method, allowing explicit
creation of an instance without automatically inheriting from the
Object prototype (older environments can assign the prototype to
null).[40] The constructor's prototype property determines the
object used for the new object's internal prototype. New methods
can be added by modifying the prototype of the function used as a
constructor. JavaScript's built-in constructors, such as Array or
Object, also have prototypes that can be modified. While it is
possible to modify the Object prototype, it is generally
considered bad practice because most objects in JavaScript will
inherit methods and properties from the Object prototype, and
they may not expect the prototype to be modified.[41]
Functions as methods
Unlike many object-oriented languages, there is no distinction
between a function definition and a method definition. Rather,
the distinction occurs during function calling; when a function
is called as a method of an object, the function's local this
keyword is bound to that object for that invocation.
Functional
A function is first-class; a function is considered to be an
object. As such, a function may have properties and methods, such
as .call() and .bind().[42] A nested function is a function
defined within another function. It is created each time the
outer function is invoked. In addition, each nested function
forms a lexical closure: The lexical scope of the outer function
(including any constant, local variable, or argument value)
becomes part of the internal state of each inner function object,
even after execution of the outer function concludes.[43]
JavaScript also supports anonymous functions.
Delegative
JavaScript supports implicit and explicit delegation.
function factorial(n) {
if (n === 0) {
return 1; // 0! = 1
}
return n * factorial(n - 1);
}
factorial(3); // returns 6
An anonymous function (or lambda):
function counter() {
var count = 0;
return function() {
return ++count;
};
}
Object example:
function Ball(r) {
this.radius = r; //the radius variable is local to the ball
object
this.area = pi*r**2;
this.show = function(){ //objects can contain functions
drawCircle(r); //references a circle drawing function
}
}
myBall = new Ball(5); //creates a new instance of the ball object
with radius 5
myBall.show(); //this instance of the ball object has the show
function performed on it
Variadic function demonstration (arguments is a special
variable):[58]
function sum() {
var x = 0;
for (var i = 0; i < arguments.length; ++i) {
x += arguments[i];
}
return x;
}
sum(1, 2); // returns 3
sum(1, 2, 3); // returns 6
Immediately-invoked function expressions are often used to create
modules, as before ECMAScript 2015 there was no built-in
construct in the language. Modules allow gathering properties and
methods in a namespace and making some of them private:
counter.get(); // shows 0
counter.set(6);
counter.increment(); // shows 7
counter.increment(); // shows 8
More advanced example
This sample code displays various JavaScript features.
return x
}
this.a = checkInt(x)
// semicolons ^^^^ are optional, a newline is enough
this.b = checkInt(y);
}
// The prototype of object instances created by a constructor is
// that constructor's "prototype" property.
LCMCalculator.prototype = { // object literal
constructor: LCMCalculator, // when reassigning a prototype,
set the constructor property appropriately
gcd: function() { // method that calculates the greatest common
divisor
// Euclidean algorithm:
var a = Math.abs(this.a),
b = Math.abs(this.b),
t;
if (a < b) {
// swap variables
// t = b; b = a; a = t;
[a, b] = [b, a]; // swap using destructuring assignment
(ES6)
}
while (b !== 0) {
t = b;
b = a % b;
a = t;
}
// Only need to calculate GCD once, so "redefine" this
method.
// (Actually not redefinition—it's defined on the instance
itself,
// so that this.gcd refers to this "redefinition" instead of
LCMCalculator.prototype.gcd.
// Note that this leads to a wrong result if the
LCMCalculator object members "a" and/or "b" are altered
afterwards.)
// Also, 'gcd' === "gcd", this['gcd'] === this.gcd
this['gcd'] = function() {
return a;
};
return a;
},
// Object property names can be specified by strings delimited
by double (") or single (') quotes.
lcm: function() {
// Variable names don't collide with object properties, e.g.,
|lcm| is not |this.lcm|.
// not using |this.a*this.b| to avoid FP precision issues
var lcm = this.a / this.gcd() * this.b;
// Only need to calculate lcm once, so "redefine" this
method.
this.lcm = function() {
return lcm;
};
return lcm;
},
toString: function() {
return "LCMCalculator: a = " + this.a + ", b = " + this.b;
}
};
// Define generic output function; this implementation only works
for Web browsers
function output(x) {
document.body.appendChild(document.createTextNode(x));
document.body.appendChild(document.createElement('br'));
}
function printResult(obj) {
output(obj + ", gcd = " + obj.gcd() + ", lcm = " + obj.lcm());
}
The following output should be displayed in the browser window.
Example script
Below is a minimal example of a standards-conforming Web page
containing JavaScript (using HTML 5 syntax) and the DOM:
<!DOCTYPE html>
<html>
<head>
<title>Example</title>
</head>
<body>
<button id="hellobutton">Hello</button>
<script>
document.getElementById('hellobutton').onclick =
function() {
alert('Hello world!'); // Show a
dialog
var myTextNode = document.createTextNode('Some new
words.');
document.body.appendChild(myTextNode); // Append
"Some new words" to the page
};
</script>
</body>
</html>
Compatibility considerations
Main article: Web interoperability
Because JavaScript runs in widely varying environments, an
important part of testing and debugging is to test and verify
that the JavaScript works across multiple browsers.
Furthermore, scripts may not work for some users. For example, a
user may:
Security
See also: Browser security
JavaScript and the DOM provide the potential for malicious
authors to deliver scripts to run on a client computer via the
Web. Browser authors minimize this risk using two restrictions.
First, scripts run in a sandbox in which they can only perform
Web-related actions, not general-purpose programming tasks like
creating files. Second, scripts are constrained by the same-
origin policy: scripts from one Web site do not have access to
information such as usernames, passwords, or cookies sent to
another site. Most JavaScript-related security bugs are breaches
of either the same origin policy or the sandbox.
Plugins, such as video players, Adobe Flash, and the wide range
of ActiveX controls enabled by default in Microsoft Internet
Explorer, may also have flaws exploitable via JavaScript (such
flaws have been exploited in the past).[74][75]
Hardware vulnerabilities
In 2015, a JavaScript-based proof-of-concept implementation of a
rowhammer attack was described in a paper by security
researchers.[81][82][83][84]
Version history
See also: ECMAScript § Versions
JavaScript was initially developed in 1996 for use in the
Netscape Navigator Web browser. In the same year Microsoft
released an implementation for Internet Explorer. This
implementation was called JScript due to trademark issues. In
1997, the first standardized version of the language was released
under the name ECMAScript in the first edition of the ECMA-262
standard.
1.8.5 July 27, 2010 1.8.2 + new features for ECMA-262 5th
edition compliance (last explicit versioning of JavaScript)
4.0
Related languages and technologies
JSON, or JavaScript Object Notation, is a general-purpose data
interchange format that is defined as a subset of JavaScript's
object literal syntax. Like much of JavaScript (regexps and
anonymous functions as 1st class elements, closures, flexible
classes, 'use strict'), JSON, except for replacing Perl's key-
value operator '=>' by an RFC 822[120] inspired ':', is
syntactically pure Perl[citation needed].
Java and JavaScript both first appeared in 1995, but Java was
developed by James Gosling of Sun Microsystems, and JavaScript by
Brendan Eich of Netscape Communications.
The differences between the two languages are more prominent than
their similarities. Java has static typing, while JavaScript's
typing is dynamic. Java is loaded from compiled bytecode, while
JavaScript is loaded as human-readable source code. Java's
objects are class-based, while JavaScript's are prototype-based.
Finally, Java did not support functional programming until Java
8, while JavaScript has done so from the beginning, being
influenced by Scheme.
WebAssembly
Starting in 2017, web browsers began supporting WebAssembly, a
technology standardized by the W3C. The WebAssembly standard
specifies a binary format, which can be produced by a compiler
toolchain such as LLVM, to execute in the browser at near native
speed. WebAssembly allows programming languages such as C, C++,
C# and Java to be used as well as JavaScript to author client-
side code for the World Wide Web.[135]
See also
icon Computer programming portal
WebAssembly
References
Flanagan 2011, pp. 1–2.
Press release announcing JavaScript, "Netscape and Sun announce
JavaScript", PR Newswire, December 4, 1995
"Standard ECMA-262". Ecma International. 2017-07-03.
"nodejs/node-eps". GitHub.
""Coders at Work: Reflections on the Craft of Programming"".
Retrieved December 25, 2018. Eich: The immediate concern at
Netscape was it must look like Java.
"RFC 4329". Apps.ietf.org. Archived from the original on 2014-
03-16. Retrieved 16 February 2016.
"System-Declared Uniform Type Identifiers". Mac OS X Reference
Library. Apple Inc. Retrieved 2010-03-05.
"JavaScript". Collins English Dictionary – Complete & Unabridged
2012 Digital Edition. William Collins Sons & Co. 2012. Retrieved
21 August 2015.
Flanagan, David. JavaScript - The definitive guide (6 ed.). p.
1. JavaScript is part of the triad of technologies that all Web
developers must learn: HTML to specify the content of web pages,
CSS to specify the presentation of web pages and JavaScript to
specify the behaviour of web pages.
"Usage Statistics of JavaScript for Websites, March 2018".
w3techs.com.
"Vanilla JS". vanilla-js.com. Retrieved 2017-12-15.
"What is VanillaJS?". stackoverflow.com. Retrieved 2017-12-15.
"ECMAScript Language Overview" (PDF). 2007-10-23. p. 4. Archived
from the original (PDF) on 2010-07-13. Retrieved 2009-05-03.
"Chapter 4. How JavaScript Was Created".
Severance, Charles (February 2012). "JavaScript: Designing a
Language in 10 Days". Computer. IEEE Computer Society. 45 (2): 7–
8. doi:10.1109/MC.2012.57. Retrieved 23 March 2013.
"TechVision: Innovators of the Net: Brendan Eich and
JavaScript". web.archive.org. Archived from the original on 2008-
02-08.
Fin JS (2016-06-17), Brendan Eich - CEO of Brave, retrieved
2018-02-07
"The History of Programming Languages". oreilly.com. O'Reilly
Media. 2004. Archived from the original on 2016-07-12. Retrieved
16 July 2016.
"What Is JavaScript?" (PDF). wiley.com. Wiley. Retrieved 16 July
2016.
Noorda, Brent (21 September 2013). "Brent Noorda's Answers on
ECMA". quora.com. Retrieved 16 July 2016.
Noorda, Brent (24 June 2010). "History of Nombas". brent-
noorda.com. Retrieved 16 July 2016.
Eich, Brendan (21 June 2011). "New JavaScript Engine Module
Owner". brendaneich.com. Retrieved 16 July 2016.
Netscape Communications Corporation (11 December 1998). "Server-
Side JavaScript Guide". oracle.com. Netscape Communications
Corporation. Retrieved 2016-07-16.
Clinick, Andrew (July 14, 2000). "Introducing JScript .NET".
Microsoft Developer Network. Microsoft. Retrieved 10 April 2018.
[S]ince the 1996 introduction of JScript version 1.0 ... we've
been seeing a steady increase in the usage of JScript on the
server—particularly in Active Server Pages (ASP)
Mahemoff, Michael (17 December 2009). "Server-Side JavaScript,
Back with a Vengeance". readwrite.com. Retrieved 2016-07-16.
Champeon, Steve (6 April 2001). "JavaScript, How Did We Get
Here?". oreilly.com. Archived from the original on 2016-07-19.
Retrieved 16 July 2016.
"Microsoft Internet Explorer 3.0 Beta Now Available".
microsoft.com. Microsoft. 29 May 1996. Retrieved 16 July 2016.
McCracken, Harry (16 September 2010). "The Unwelcome Return of
"Best Viewed with Internet Explorer"". technologizer.com.
Retrieved 16 July 2016.
"Documentation". ecmascript.org. Archived from the original on
2011-04-26. Retrieved 16 July 2016. development of a Fourth
Edition was not completed, that work influenced Fifth Edition
Crockford, Douglas (2001). "JavaScript, The World's Most
Misunderstood Programming Language". crockford.com. Retrieved 16
July 2016.
Kowal, Kris (1 December 2009). "CommonJS Effort Sets JavaScript
on Path for World Domination". arstechnica.com. Retrieved 16 July
2016.
"USPTO Copyright entry #75026640". USPTO.
"Sun Trademarks". Sun Microsystems. Archived from the original
on 28 May 2010. Retrieved 2007-11-08.
Flanagan 2006, p. 16.
"JavaScript data types and data structures - JavaScript | MDN".
Developer.mozilla.org. 2017-02-16. Retrieved 2017-02-24.
Flanagan 2006, pp. 176–178.
"Inheritance and the prototype chain". Mozilla Developer
Network. Mozilla. Retrieved 6 April 2013.
Herman, David (2013). Effective JavaScript. Addison-Wesley. p.
83. ISBN 978-0-321-81218-6.
Haverbeke, Marijn (2011). Eloquent JavaScript. No Starch Press.
pp. 95–97. ISBN 978-1-59327-282-1.
Katz, Yehuda. "Understanding "Prototypes" in JavaScript".
Retrieved 6 April 2013.
Herman, David (2013). Effective JavaScript. Addison-Wesley. pp.
125–127. ISBN 978-0-321-81218-6.
"Properties of the Function Object". Es5.github.com. Retrieved
2013-05-26.
Flanagan 2006, p. 141.
The many talents of JavaScript for generalizing Role-Oriented
Programming approaches like Traits and Mixins,
Peterseliger.blogpsot.de, April 11, 2014.
Traits for JavaScript, 2010.
"Home | CocktailJS". Cocktailjs.github.io. Retrieved 2017-02-24.
Angus Croll, A fresh look at JavaScript Mixins, published May
31, 2011.
"Concurrency model and Event Loop". Mozilla Developer Network.
Retrieved 2015-08-28.
Haverbeke, Marijn (2011). Eloquent JavaScript. No Starch Press.
pp. 139–149. ISBN 978-1-59327-282-1.
Robert Nyman, Getters And Setters With JavaScript – Code Samples
And Demos, Robertnyman.com, published 29 May 2009, accessed 2
January 2010.
John Resig, JavaScript Getters and Setters, Ejohn.org, 18 July
2007, accessed 2 January 2010
"E4X – Archive of obsolete content | MDN". Mozilla Developer
Network. Mozilla Foundation. Feb 14, 2014. Retrieved 13 July
2014.
"var – JavaScript – MDN". The Mozilla Developer Network.
Retrieved 22 December 2012.
"let". MDN web docs. Mozilla. Retrieved 27 June 2018.
"const". MDN web docs. Mozilla. Retrieved 27 June 2018.
"ECMAScript Language Specification – ECMA-262 Edition 5.1". Ecma
International. Retrieved 22 December 2012.
"console". Mozilla Developer Network. Mozilla. Retrieved 6 April
2013.
"arguments". Mozilla Developer Network. Mozilla. Retrieved 6
April 2013.
Hamilton, Naomi (2008-07-31). "The A-Z of Programming Languages:
JavaScript". computerworld.com.au.
"Javascript - Object detection". Quirksmode.org. Retrieved 2017-
02-24.
Peter-Paul Koch, Mission Impossible – mouse position
"JavaScript - Browser detect". Quirksmode.org. Retrieved 2017-
02-24.
"Progressive Enhancement: What It Is, And How To Use It?".
Smashingmagazine.com. Retrieved 2018-10-20.
"Making JavaScript Safe for Advertising". ADsafe. Retrieved
2013-05-26.
"Secure ECMA Script (SES)". Code.google.com. Retrieved 2013-05-
26.
"Mozilla Cross-Site Scripting Vulnerability Reported and Fixed -
MozillaZine Talkback". Mozillazine.org. Retrieved 2017-02-24.
"Right-click "protection"? Forget about it". 2008-06-17. ISSN
1797-1993. Archived from the original on 2011-08-22. Retrieved
2008-06-17.
"Thou Shalt Not Depend on Me: Analysing the Use of Outdated
JavaScript Libraries on the Web" (PDF). 2016-12-21. Retrieved
2017-02-22.
Quartz, How one programmer broke the internet by deleting a tiny
piece of code
SC Magazine UK, Developer's 11 lines of deleted code 'breaks the
internet'
Mozilla Corporation, Buffer overflow in crypto.signText()
Festa, Paul (August 19, 1998). "Buffer-overflow bug in IE".
CNET. Archived from the original on December 25, 2002.
SecurityTracker.com, Apple Safari JavaScript Buffer Overflow
Lets Remote Users Execute Arbitrary Code and HTTP Redirect Bug
Lets Remote Users Access Files
SecurityFocus, Microsoft WebViewFolderIcon ActiveX Control
Buffer Overflow Vulnerability
Fusion Authority, Macromedia Flash ActiveX Buffer Overflow
Archived 2011-08-22 at WebCite
"Protected Mode in Vista IE7 – IEBlog". Blogs.msdn.com. 2006-02-
09. Retrieved 2017-02-24.
US CERT, Vulnerability Note VU#713878: Microsoft Internet
Explorer does not properly validate source of redirected frame
Mozilla Foundation, Mozilla Foundation Security Advisory 2005–
41: Privilege escalation via DOM property overrides
Microsoft Corporation, Changes to Functionality in Microsoft
Windows XP Service Pack 2: Part 5: Enhanced Browsing Security
For one example of a rare JavaScript Trojan Horse, see Symantec
Corporation, JS.Seeker.K
Gruss, Daniel; Maurice, Clémentine; Mangard, Stefan (2015-07-
24). "Rowhammer.js: A Remote Software-Induced Fault Attack in
JavaScript". arXiv:1507.06955 [cs.CR].
Jean-Pharuns, Alix (2015-07-30). "Rowhammer.js Is the Most
Ingenious Hack I've Ever Seen". Motherboard.
Goodin, Dan (2015-08-04). "DRAM 'Bitflipping' exploit for
attacking PCs: Just add JavaScript". Ars Technica.
David Auerbach (July 28, 2015). "Rowhammer security exploit: Why
a new security attack is truly terrifying". slate.com. Retrieved
July 29, 2015.
AnC VUSec, 2017
New ASLR-busting JavaScript is about to make drive-by exploits
much nastier Ars Technica, 2017
"JavaScript for Acrobat". Retrieved 2009-08-18.
"Logic Pro X". Apple. Apple, Inc. Retrieved January 31, 2017.
"UnityScript's long ride off into the sunset – Unity Blog".
Unity Technologies Blog. Retrieved 2018-10-14.
"Technical Specification". dxstudio.com. Retrieved 2009-10-20.
THINK! The Maxwell Render Resourcer Center, Scripting References
Archived 2011-11-02 at the Wayback Machine
Google Apps Script, Google Apps Script
"ChatZilla! Frequently Asked Questions – 4.5. How do I write
scripts?". Chatzilla.hacksrus.com. Retrieved 11 February 2011.
"Xcdscript". Archived from the original on 1 May 2011. Retrieved
11 February 2011.
"RPG Maker MV | RPG Maker | Make Your Own Games!". Retrieved 28
August 2015.
"Version Information (JavaScript)". Msdn.microsoft.com.
Retrieved 2013-05-26.
"javax.script release notes". Java.sun.com. Retrieved 2009-05-
19.
Flanagan 2006, pp. 214 et seq.
Nokia Corporation, QtScript Module Archived 2010-07-09 at the
Wayback Machine
"NW.js". Nwjs.io. Retrieved 2017-02-24.
"Behind the Scenes with Owen Taylor". The GNOME Journal.
Archived from the original on 2012-12-21. Retrieved 2010-01-23.
"Answering the question: "How do I develop an app for GNOME?"".
"Open webOS". 30 March 2012. Archived from the original on 30
March 2012.
"Enyo JavaScript Application Framework". Enyojs.com. Retrieved
2017-02-24.
"Weex". 2 February 2017. Archived from the original on 2
February 2017.
"Advanced Debugging With JavaScript". alistapart.com. 2009-02-
03. Retrieved 2010-05-28.
"The JavaScript Debugging Console". javascript.about.com. 2010-
05-28. Retrieved 2010-05-28.
"SplineTech JavaScript Debugger – an independent standalone
JavaScript Debugger". javascript-debugger.com. 2013-08-26.
Retrieved 2013-08-26.
"Debugging with Node Inspector". docs.strongloop.com. Archived
from the original on 2014-05-08. Retrieved 2014-05-07.
JScript development in Microsoft Office 11 (MS InfoPath 2003)
"Introducing Drosera – Surfin' Safari". Webkit.org. 2006-06-28.
Retrieved 2009-05-19.
"Opera DragonFly". Opera Software.
"Khan Academy Computer Science". Retrieved 28 Sep 2012.
"Benchmark.js". benchmarkjs.com.
JSBEN.CH. "JSBEN.CH Performance Benchmarking Playground for
JavaScript". jsben.ch.
"New in JavaScript". developer.mozilla.org. 2014. Retrieved
2016-07-16.
"JavaScript – JScript – ECMAScript version history".
Webmasterworld.com. Retrieved 2009-12-17.
John Resig. "Versions of JavaScript". Ejohn.org. Retrieved 2009-
05-19.
"What Version of Javascript". Javascript.about.com. 2016-02-22.
Archived from the original on 2017-01-09. Retrieved 2017-02-24.
"RFC 822 - STANDARD FOR THE FORMAT OF ARPA INTERNET TEXT
MESSAGES". Tools.ietf.org. 1982-08-13. Retrieved 2017-02-24.
Release Notes for the Next-Generation Java™ Plug-In Technology
(introduced in Java SE 6 update 10). Java.sun.com. Retrieved on
2013-06-13.
"frequently asked questions". asm.js. Retrieved 2014-04-13.
"Home". p5.js. 2017-01-21. Retrieved 2017-02-24.
http://dspace.thapar.edu:8080/jspui/handle/10266/4162
"Home". dspace.thapar.edu:8080. 2016-08-26. Retrieved 2016-08-
26.
"clojure/clojurescript · GitHub". Github.com. Retrieved 2014-04-
13.
"New in JavaScript 1.7". Developer.mozilla.org. 2012-12-05.
Retrieved 2013-05-26.
Walton, Zach (2012-04-04). "Easily Port C++ To HTML5/JavaScript
With Emscripten". WebProNews. iEntry Network. Archived from the
original on 2013-07-30. Retrieved 2018-09-18.
"pascal/pas2js · FreePascal". freepascal.org. Retrieved 2017-12-
24.
Ralph Sommerer. "Oberon Script. A Lightweight Compiler and
Runtime System for the Web". research.microsoft.com. Retrieved
2015-12-18.
Sébastien Doeraene. "Scala.js". Lampwww.epfl.ch. Retrieved 2014-
04-13.
"SqueakJS by Bert Freudenberg". bertfreudenberg.github.io.
"Whalesong: a Racket to JavaScript compiler". Hashcollision.org.
Retrieved 2014-04-13.
Brendan Eich (3 April 2008). "Popularity". Retrieved 2012-01-19.
"Edge Browser Switches WebAssembly to 'On' -- Visual Studio
Magazine". Visual Studio Magazine.
Further reading
Bhangal, Sham; Jankowski, Tomasz (2003). Foundation Web Design:
Essential HTML, JavaScript, CSS, PhotoShop, Fireworks, and Flash.
APress L. P. ISBN 1-59059-152-6.
Burns, Joe; Growney, Andree S. (2001). JavaScript Goodies.
Pearson Education. ISBN 0-7897-2612-2.
Duffy, Scott (2003). How to do Everything with JavaScript.
Osborne. ISBN 0-07-222887-3.
Flanagan, David (2006). JavaScript: The Definitive Guide (5th
ed.). O'Reilly & Associates. ISBN 0-596-10199-6.
Flanagan, David (2011). JavaScript: The Definitive Guide (6th
ed.). O'Reilly & Associates. ISBN 978-0-596-80552-4.
Goodman, Danny; Eich, Brendan (2001). JavaScript Bible. John
Wiley & Sons. ISBN 0-7645-3342-8.
Goodman, Danny; Markel, Scott (2003). JavaScript and DHTML
Cookbook. O'Reilly & Associates. ISBN 0-596-00467-2.
Harris, Andy (2001). JavaScript Programming for the Absolute
Beginner. Premier Press. ISBN 0-7615-3410-5.
Haverbeke, Marijn (2011). Eloquent JavaScript. No Starch Press.
ISBN 978-1-59327-282-1.
Heinle, Nick; Koman, Richard (1997). Designing with JavaScript.
O'Reilly & Associates. ISBN 1-56592-300-6.
Husted, Robert; Kuslich, JJ (1999). Server-Side JavaScript:
Developing Integrated Web Applications (1st ed.). Addison-Wesley.
ISBN 0-201-43329-X.
McDuffie, Tina Spain (2003). JavaScript Concepts & Techniques:
Programming Interactive Web Sites. Franklin, Beedle & Associates.
ISBN 1-887902-69-4.
McFarlane, Nigel (2003). Rapid Application Development with
Mozilla. Prentice Hall Professional Technical References. ISBN 0-
13-142343-6.
Powell, Thomas A.; Schneider, Fritz (2001). JavaScript: The
Complete Reference. McGraw-Hill Companies. ISBN 0-07-219127-9.
Shelly, Gary B.; Cashman, Thomas J.; Dorin, William J.; Quasney,
Jeffrey J. (2000). JavaScript: Complete Concepts and Techniques.
Cambridge: Course Technology. ISBN 0-7895-6233-2.
Vander Veer, Emily A. (2004). JavaScript For Dummies (4th ed.).
Wiley Pub. ISBN 0-7645-7659-3.
Watt, Andrew H.; Watt, Jonathan A.; Simon, Jinjer L. (2002).
Teach Yourself JavaScript in 21 Days. Pearson Education. ISBN 0-
672-32297-8.
Zakas, Nicholas C. (2012). Professional JavaScript for Web
Developers (3rd ed.). Wrox. ISBN 978-1-118-02669-4.