Firefox 50

The behavior of \W in RegExp with unicode and ignoreCase flags is changed to match recent draft spec. Now it doesn't match to K, S, k, s, and KELVIN SIGN (U+212A), and LATIN SMALL LETTER LONG S (U+017F) (bug 1281739).

Firefox 47

The deprecated old Proxy API (Proxy.create and Proxy.createFunction) now presents a deprecation warning in the console and will be removed in a future version. Use the standard Proxy object instead (bug 892903).

Support for the deprecated non-standard flags argument of String.prototype.match/search/replace has been dropped in non-release builds (bug 1245801).

Firefox 43

New APIs

Changes regarding the arguments object

To match the ES2015 specification, arrow functions no longer have their own arguments object. The arguments object is now lexically bound (inherited from the outer function). In most cases, rest parameters are a good alternative (...args) => args[i], see bug 889158.

As part of ES2015 specification compliance, parenthesized destructuring patterns, like ([a, b]) = [1, 2] or ({a, b}) = { a: 1, b: 2 }, are now considered invalid and will throw a SyntaxError. See Jeff Walden's blog post for more details.

RegExp function returns pattern itself if called without new and pattern object has a property named Symbol.match with a truthy value, and the pattern object's constructor property equals to RegExp function. (bug 1147817).

Support for the non-standard JS1.7 destructuring for-in has been dropped (bug 1083498).

If the DataView constructor is called as a function without the new operator, a TypeError is now thrown as per the ES2015 specification.

An issue regressed in Firefox 21, where proxyfied arrays without the get trap were not working properly, has been fixed. If the get trap in a Proxy was not defined, Array.length returned 0 and the set trap didn't get called. A workaround was to add the get trap even if was not necessary in your code. This issue has been fixed now (bug 895223).

The development of ParallelJS (PJS) has been discontinued due to the limited future prospects, little attention and code complexity. The experimental implementation that had been enabled only on the Nightly channel, including the Array.prototype.mapPar, filterPar and reducePar methods, has been completely removed.

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.

In regular expressions (including String.replace), the matched text for a capturing group is now undefined instead of the empty string when that capturing group didn't get consulted because quantifiers prevented its exercise (see bug 369778 and this example code). Note that due to web compatibility, RegExp.$N will still return an empty string (bug 1053944).

A malformed JSON string parsed by JSON.parse() now yields a more detailed error message containing the line and column number that caused the parsing error. This is useful when debugging large JSON data.

Firefox 23

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.

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.

Firefox 7

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.

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).