1 | 'use strict';
|
2 | var global = require('../internals/global');
|
3 | var fails = require('../internals/fails');
|
4 | var uncurryThis = require('../internals/function-uncurry-this');
|
5 | var toString = require('../internals/to-string');
|
6 | var trim = require('../internals/string-trim').trim;
|
7 | var whitespaces = require('../internals/whitespaces');
|
8 |
|
9 | var $parseInt = global.parseInt;
|
10 | var Symbol = global.Symbol;
|
11 | var ITERATOR = Symbol && Symbol.iterator;
|
12 | var hex = /^[+-]?0x/i;
|
13 | var exec = uncurryThis(hex.exec);
|
14 | var FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22
|
15 |
|
16 | || (ITERATOR && !fails(function () { $parseInt(Object(ITERATOR)); }));
|
17 |
|
18 |
|
19 |
|
20 | module.exports = FORCED ? function parseInt(string, radix) {
|
21 | var S = trim(toString(string));
|
22 | return $parseInt(S, (radix >>> 0) || (exec(hex, S) ? 16 : 10));
|
23 | } : $parseInt;
|