| | |
| | | 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 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)); })); |
| | |
| | | // 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) || (hex.test(S) ? 16 : 10)); |
| | | return $parseInt(S, (radix >>> 0) || (exec(hex, S) ? 16 : 10)); |
| | | } : $parseInt; |