总结一下前端中Math和Number的常用API

再做原生JS项目时,我们经常会遇到那些,我们常用却容易忘记的API,所以今天我来总结一部分常用的API,但是要注意里面的一些坑!(这些坑都是关于判断Null,undefined,"",{},[],0,-0,true,false等)我把他们放到了文章最后的代码位置

1. Math中的API

  • Math.random() 随机产生一个[0,1)之间的数字
  • Math.**floor()**向下取整
  • Math.ceil() 向上取整
注意:floor和ceil并不会四舍五入。
  • Math.round() 四舍五入取整
  • Math.PI 圆周率
  • Math.sqrt() 开某一个数的平方
  • Math.cbrt() 开某一个数的立方
  • Math.pow() 开某一个数的指定次方,注意他有两个参数
  • Math.abs() 求一个数的绝对值
  • Math.min/max() 求最小(大)值
<script>
      // 圆周率 π
      console.log(Math.PI);
      // 开某个数的平方/立方
      // Math.sqrt()/cbrt()
      console.log(Math.sqrt(4));
      console.log(Math.cbrt(8));
      // 开某个数的 N 次方
      // Math.pow()
      console.log(Math.pow(8, 1 / 3));

      // 绝对值 Math.abs
      console.log(Math.abs(-Infinity));
      console.log(Math.abs(null));
      console.log(Math.abs(false));
      console.log(Math.abs(true));
      // 向上取整/向下取整 Math.floor()/ceil

      console.log(Math.floor(1.9999999));
      console.log(Math.ceil(1.9999999));

      // 四舍五入取整
      console.log(Math.round(2.2));
      console.log(Math.round(2.5));
      console.log(Math.round(""));

      // 取2或N个数之间的最小值
      console.log(Math.min(-Infinity, 1, 2, -2.2, 4, 64, 54));
      console.log(Math.max(-Infinity, 1, 2.5, -2, 4, 64, 54));
      console.log(Math.max(null, undefined)); //NaN
      console.log(Math.max(null, true)); //1
      console.log(Math.max(4, ...[1, 2, 3]));

      // 返回[0-1)之间的随机数
      console.log(Math.random());
      // 判断是正数/负数/0
      console.log(Math.sign(-10));
      console.log(Math.sign(0));
      console.log(Math.sign(-0));
      console.log(0 === -0);
      //   注意floor 和 trunc 的区别
      console.log(Math.floor(-1.9999999));
      console.log(Math.trunc(-1.9999999));
    </script>

2.Number中的API

因为Number和Window里面的API基本一致,但是有区别。Window下判断null == undefined 会返回true 常用的API就是如下这几条:

  • Number.MAX_VALUE数字最大值
  • Number.MAX_SAFE_INTEGER最大安全数值

(注意和Infinity进行比较)

注意:MAX_SAFE_INTEGERMAX_VALUEInfinity 他们三个的大小关系(他们的值按顺序依次变大)

Number.isNaN 判断 是非数字 (这个比较绕注意区分)不要翻译成是不是一个数字。。。一会就把你绕迷了=…=

  • Number.parseInt() 把值/字符串类型(字符串必须以数字开头)强制转化成数字。
  • Number.parseFloat() 把值类型强制转化成字符串。

如果转化不成功 不会报错,返回NaN!

  • Number.**toFixed()**保留几位小数,注意不传参数代表保留0位
<script>
      // 1.使用字面量定义一个数字
      var num1 = 10;
      // 2.使用构造函数
      var num2 = Number("10");
      // 3.使用创建实例  实例获取值 要调用valueOf()
      // var num3 = new Number("true")//为字符串的时候不行。
      var num3 = new Number(true);

      console.log(num2 instanceof Number); //false
      console.log(num3 instanceof Number); //true
      console.log(num1);
      console.log(num2);
      console.log(num3);
      console.log(num3.valueOf());
      // console.log(num3.toString());
      // 注意数字和字符串加减问题
      // 最大/小安全整数 (+-)2^53-1
      console.log(Number.MAX_SAFE_INTEGER);
      console.log(Number.MIN_SAFE_INTEGER);
      // 幂运算Math.pow(2,53) / log(2**53)
      console.log("~".repeat(20));

      // 数字最大值,比最大值还要大的就是 无穷大Infinity
      console.log(Number.MAX_VALUE);
      console.log(Number.MIN_VALUE);
      if (Number.MAX_VALUE < Infinity) {
        console.log("对");
      }
      if (Number.MAX_SAFE_INTEGER < Number.MAX_VALUE) {
        console.log("对1");
      }

      console.log("~".repeat(20));
      console.log(Number.POSITIVE_INFINITY === Infinity);
      console.log(Number.NEGATIVE_INFINITY === -Infinity);
      console.log("~".repeat(20));

      console.log(Number.NaN);
      console.log(window.NaN);
      console.log(Number.NaN === window.NaN); //false
      console.log(NaN === NaN); //false
      //   NaN跟任何值都不相等 包括他自己
      //   Number.isFinite 判断是不是有穷数
      console.log("~".repeat(20));
      //   是非数字返回true
      console.log(window.isNaN(1));
      console.log(window.isNaN("")); // '' 会转化成0  所以返回false
      //   判断是不是数字
      //   Number.isNaN() 不会自行将参数转换成数字,只有在参数是值为 NaN 的数字时,才会返回 true
      function isNumber(value) {
        if (isNaN(value)) {
          return false;
        }
        return true;
      }

      function isNumber2(value) {
        return typeof value === "number";
      }

      //   数字类型转换(掌握)
      console.log(Number.parseInt(20.01));
      console.log(Number.parseFloat(20.01));
      //   第二个参数 表示第一个参数是几进制, 得到的结果永远是十进制
      console.log(parseInt("2", 10)); //2
      console.log(parseInt("2", 8)); //2
      //   当parseInt()转换不成功 就返回NaN

      // toFixed()保留几位小数  不传参数相当于参数为0 (不会四舍五入???)。 一般用来调整格式。

      var num4 = 20.345;
      var num5 = 20.245;
      console.log(num4.toFixed()); //20
      console.log(num4.toFixed(2));
      console.log(num5.toFixed(2));
      console.log(num4.toFixed(3));
    </script>
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐