blob: feb878c0328e4aab1c24322af72c1d1c31fdc976 [file] [log] [blame]
Leo Repp58b9f112021-11-22 11:57:47 +01001'use strict';
2
3var GetIntrinsic = require('get-intrinsic');
4
5var $TypeError = GetIntrinsic('%TypeError%');
6
7var SameValue = require('./SameValue');
8var ToNumber = require('./ToNumber');
9var ToString = require('./ToString');
10var Type = require('./Type');
11
12// https://ecma-international.org/ecma-262/6.0/#sec-canonicalnumericindexstring
13
14module.exports = function CanonicalNumericIndexString(argument) {
15 if (Type(argument) !== 'String') {
16 throw new $TypeError('Assertion failed: `argument` must be a String');
17 }
18 if (argument === '-0') { return -0; }
19 var n = ToNumber(argument);
20 if (SameValue(ToString(n), argument)) { return n; }
21 return void 0;
22};