Firefox JavaScript changelog

The following is a changelog for JavaScript features in Firefox releases.

Firefox 52

See also:

Firefox 51

See also:

Firefox 50

See also:

Firefox 49

See also:

Firefox 48

New APIs

Deprecations and removals

See also:

Firefox 47

See also:

Firefox 46

See also:

Firefox 45

See also:

Firefox 44

New APIs

Changes

Removals

See also:

Firefox 43

New APIs

Changes regarding the arguments object

Other changes

See also:

Firefox 42

See also:

Firefox 41

See also:

Firefox 40

See also:

Firefox 39

See also:

Firefox 38

See also:

Firefox 37

See also:

Firefox 36

See also:

Firefox 35

  • The "temporal dead zone" for let declarations has been implemented. In conformance with ES2015 let semantics, the following situations
    now throw errors. See also this newsgroup announcement and bug 1001090.
    • Redeclaring existing variables or arguments using let within the same scope in function bodies is now a syntax error.
    • Using a variable declared using let in function bodies before the declaration is reached and evaluated is now a runtime error.
  • ES2015 Symbols (only available in the Nightly channel) have been updated to conform with recent specification changes:
    • String(Symbol("1")) now no longer throws a TypeError; instead a string ("Symbol(1)") gets returned (bug 1058396).
  • The various TypedArray constructors now have as their [[Prototype]] a single function, denoted %TypedArray%  in ES2015 (but otherwise not directly exposed).  Each typed array prototype now inherits from %TypedArray%.prototype.  (%TypedArray% and %TypedArray%.prototype inherit from Function.prototype and Object.prototype, respectively, so that typed array constructors and instances still have the properties found on those objects.)  Typed array function properties now reside on %TypedArray%.prototype and work on any typed array.  See TypedArray and bug 896116 for more information.
  • ES2015 semantics for prototype mutations using object literals have been implemented (bug 1061853).
    • Now only a single member notated as __proto__:value will mutate the [[Prototype]] in the object literal syntax.
    • Method members like __proto__() {} will not overwrite the [[Prototype]] anymore.

See also:

Firefox 34

See also:

Firefox 33

See also:

Firefox 32

See also:

Firefox 31

New ECMAScript 2015 features implemented:

See also:

Firefox 30

See also:

Firefox 29

See also:

Firefox 28

See also:

Firefox 27

EcmaScript 2015 implementation continues!

See also:

Firefox 26

EcmaScript 2015 implementation continues!

See also:

Firefox 25

EcmaScript 2015 implementation continues!

See also:

Firefox 24

See also:

Firefox 23

  • The Object.defineProperty method can now be used to redefine the length property of an Array object.
  • The option to disable JavaScript, including the options to allow moving windows/replace context menu, have been removed. You may still disable JavaScript by double clicking the "javascript.enabled" option in about:config.

See also:

Firefox 22

See also:

Firefox 21

  • E4X, an ancient JavaScript extension, has been removed. Implemented only in Gecko, it never got significant traction (bug 788293).
  • parseInt no longer treats strings with leading "0" as octal (bug 786135).

See also:

Firefox 20

See also:

Firefox 19

See also:

Firefox 18

  • Harmony's (ECMAScript 2015) Direct Proxies have been landed (bug 703537). Warning: the implementation contains a couple of known bugs, missing features and misalignements with the current state of the spec. Do not rely on it for production code.
  • The ECMAScript 2015 contains() method is now implemented on strings. This is unfortunately not compatible with Mootools 1.2, which expects different behavior from contains() on strings but does not ensure it. Newer versions of Mootools fix this issue; sites should upgrade their Mootools version to something newer than 1.2.

See also:

Firefox 17

See also:

Firefox 16

See also:

Firefox 15

See also:

Firefox 14

No change.

See also:

Firefox 13

  • Support for the ECMAScript 2015 for..of construct has been added.
  • Experimental support for ECMAScript 2015 Map and Set objects has been implemented.

See also:

Firefox 12

See also:

Firefox 11

No change.

See also:

Firefox 10

  • The method WeakMap.set() now returns undefined, instead of itself.
  • A bug was introduced in regular expression handling in Firefox 7; this has been fixed. See bug 683838 if you want the gory details.
  • You can no longer use E4X syntax while in ECMAScript 5 strict mode (that is, after "use strict;").

See also:

Firefox 9

No change.

See also:

Firefox 8

See also:

Firefox 7

See also:

Firefox 6

  • In the past, it was possible to use the new operator on several built-in functions (eval, parseInt, Date.parse...) that should not have allowed it, according to the specification. This behavior is no longer supported. Using the new operator in this way was never officially supported and was not widely done, so it's unlikely that this change affects you.
  • ECMAScript 2015 WeakMaps have been added as a prototype implementation.

See also:

Firefox 5

  • Regular expressions are no longer callable as if they were functions; this change has been made in concert with the WebKit team to ensure compatibility (see WebKit bug 28285. This feature had existed for a long time but was never documented (at least, not here on MDC).
  • The Function.prototype.isGenerator() method is now supported; this lets you determine if a function is a generator.
  • The following reserved words were previously only treated as reserved when in strict mode; now they're always treated as reserved: class, enum, export, extends, import, and super.
  • DOM documents created in chrome code may no longer be exposed to sandboxed scripts.
  • The JSON parser has been re-written for improved speed and compliance. This includes a fix for bug 572279.

See also:

Older versions

For versions prior to Firefox 5, see the old JavaScript versions.

 

Document Tags and Contributors

 Contributors to this page: fscholz
 Last updated by: fscholz,