tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

Number.js (1752B)


      1 /* This Source Code Form is subject to the terms of the Mozilla Public
      2 * License, v. 2.0. If a copy of the MPL was not distributed with this
      3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      4 
      5 // ES6 draft ES6 20.1.2.4
      6 function Number_isFinite(num) {
      7  if (typeof num !== "number") {
      8    return false;
      9  }
     10  return num - num === 0;
     11 }
     12 
     13 // ES6 draft ES6 20.1.2.2
     14 function Number_isNaN(num) {
     15  if (typeof num !== "number") {
     16    return false;
     17  }
     18  return num !== num;
     19 }
     20 
     21 // ES2021 draft rev 889f2f30cf554b7ed812c0984626db1c8a4997c7
     22 // 20.1.2.3 Number.isInteger ( number )
     23 function Number_isInteger(number) {
     24  // Step 1. (Inlined call to IsIntegralNumber)
     25 
     26  // 7.2.6 IsIntegralNumber, step 1.
     27  if (typeof number !== "number") {
     28    return false;
     29  }
     30 
     31  var integer = std_Math_trunc(number);
     32 
     33  // 7.2.6 IsIntegralNumber, steps 2-4.
     34  // |number - integer| ensures Infinity correctly returns false, because
     35  // |Infinity - Infinity| yields NaN.
     36  return number - integer === 0;
     37 }
     38 
     39 // ES2021 draft rev 889f2f30cf554b7ed812c0984626db1c8a4997c7
     40 // 20.1.2.5 Number.isSafeInteger ( number )
     41 function Number_isSafeInteger(number) {
     42  // Step 1. (Inlined call to IsIntegralNumber)
     43 
     44  // 7.2.6 IsIntegralNumber, step 1.
     45  if (typeof number !== "number") {
     46    return false;
     47  }
     48 
     49  var integer = std_Math_trunc(number);
     50 
     51  // 7.2.6 IsIntegralNumber, steps 2-4.
     52  // |number - integer| to handle the Infinity case correctly.
     53  if (number - integer !== 0) {
     54    return false;
     55  }
     56 
     57  // Steps 1.a, 2.
     58  // prettier-ignore
     59  return -((2 ** 53) - 1) <= integer && integer <= (2 ** 53) - 1;
     60 }
     61 
     62 function Global_isNaN(number) {
     63  return Number_isNaN(TO_NUMBER(number));
     64 }
     65 
     66 function Global_isFinite(number) {
     67  return Number_isFinite(TO_NUMBER(number));
     68 }