String.prototype.split ( separator, limit )
Splits the receiver at
separator, returns an Array of at most
ES5 (220.127.116.11.5): If limit is undefined, let lim = 232-1; else let lim = ToUint32(limit).
ES6 (18.104.22.168.8): If limit is undefined, let lim = 253-1; else let lim = ToLength(limit).
- Return value is an Array, so a
limitgreater 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.
- Behavior changes for negative
limit: ToUint32 transforms -1 to 232-1; ToLength instead transforms -1 to 0.
Revert this spec change. Existing implementations still match ES5, and the old behavior still makes sense (even with ES6's longer String length limit).