You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
23 lines
931 B
23 lines
931 B
3 years ago
|
var global = require('../internals/global');
|
||
|
var fails = require('../internals/fails');
|
||
|
var uncurryThis = require('../internals/function-uncurry-this');
|
||
|
var toString = require('../internals/to-string');
|
||
|
var trim = require('../internals/string-trim').trim;
|
||
|
var whitespaces = require('../internals/whitespaces');
|
||
|
|
||
|
var $parseInt = global.parseInt;
|
||
|
var Symbol = global.Symbol;
|
||
|
var ITERATOR = Symbol && Symbol.iterator;
|
||
|
var hex = /^[+-]?0x/i;
|
||
|
var exec = uncurryThis(hex.exec);
|
||
|
var FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22
|
||
|
// MS Edge 18- broken with boxed symbols
|
||
|
|| (ITERATOR && !fails(function () { $parseInt(Object(ITERATOR)); }));
|
||
|
|
||
|
// `parseInt` method
|
||
|
// https://tc39.es/ecma262/#sec-parseint-string-radix
|
||
|
module.exports = FORCED ? function parseInt(string, radix) {
|
||
|
var S = trim(toString(string));
|
||
|
return $parseInt(S, (radix >>> 0) || (exec(hex, S) ? 16 : 10));
|
||
|
} : $parseInt;
|