- Evaluate all computed names before any values in object literals needs a champion (Jordan Harband for Daniel Ehrenberg)
- Remove ToUint32 from array literal evaluation (Jordan Harband for Daniel Ehrenberg)
- Prevent DFS invariants from being broken (Jordan Harband for Gus Caplan)
- Redefine CatchParameter as FormalParameter (Jordan Harband for Sergey Rubanov)
- Reduce the amount of implementation-defined behavior in
Array.prototype.sort
(slides) (Mathias Bynens) - Strengthening
Atomics.wait
andAtomics.notify
(PR) ([slides](https://docs.google.com/presentation/d/1EwlEhNxSLs0spaKrvR44ogiKj69ZcyIN
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class CaseInsensitiveSet extends Set { | |
add(key) { | |
return super.add(key.toLowerCase()); | |
} | |
delete(key) { | |
return super.delete(key.toLowerCase()); | |
} | |
has(key) { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// What does this code do? | |
function f(x = eval("var z = 2; 1"), y = z) { | |
return [x, y, z]; | |
} | |
f(); | |
// Spec says to throw a ReferenceError, since 'z' is not visible either | |
// to other parameters in the list, or to the function body. | |
// | |
// Results in various engines: |
Splits the receiver at separator
, returns an Array of at most limit
segments.
ES5 (15.5.4.14.5): If limit is undefined, let lim = 232-1; else let lim = ToUint32(limit).
ES6 (21.1.3.17.8): If limit is undefined, let lim = 253-1; else let lim = ToLength(limit).
- Return value is an Array, so a
limit
greater than 232-1 would result in a "malformed" array (one with elements past the end of the array). Iteration over the return value will skip all such elements.