2.1.85 [ECMA-262/6] Section 21.1.3.17 String.prototype.split ( separator, limit )
V0184: lim should be ToLength(limit) but may not be
The specification states:
-
21.1.3.17 String.prototype.split ( separator, limit ) Returns an Array object into which substrings of the result of converting this object to a String have been stored. ... When the split method is called, the following steps are taken: ... 8. If limit is undefined, let lim = 2^53–1; else let lim = ToLength(limit).
All document modes (All versions)
If limit
is not undefined, lim
should be ToLength(limit)
,
but instead is taken to be the value of limit
converted to a 32-bit unsigned value. For example, if limit
= -1, lim
is 0xFFFFFFFF, the largest 32-bit
number. If limit
= 0xA987654321, lim
is 0x87654321.
V0138: @@split is not implemented
The specification states:
-
21.1.3.17 String.prototype.split ( separator, limit ) Returns an Array object into which substrings of the result of converting this object to a String have been stored. The substrings are determined by searching from left to right for occurrences of separator; these occurrences are not part of any substring in the returned array, but serve to divide up the String value. The value of separator may be a String of any length or it may be an object, such as an RegExp, that has a @@split method. When the split method is called, the following steps are taken: ... 3. If separator is neither undefined nor null, then a. Let splitter be GetMethod(separator, @@split). b. ReturnIfAbrupt(splitter). c. If splitter is not undefined , then i. Return Call(splitter, separator, «O, limit»).
IE11 Mode (All versions)
@@split
is not implemented.