JavaScript Math对象详解与常用方法封装

作者:代码拾荒

时间:2026-10-23

浏览:414

本文详解JavaScript中Math内置对象的核心属性与方法,包括圆周率、最值、绝对值及取整操作。通过封装自定义对象演示如何复用PI、最大最小值逻辑,并深入讲解random随机数生成原理及整数区间获取公式,附带完整代码示例。

文章目录

Math内置对象基础用法

Math对象是JavaScript的内置全局对象,并非构造函数,因此无需使用new关键字实例化,可直接调用其属性和方法。例如,Math.PI返回圆周率常量;Math.max()用于比较多个数值并返回最大值,若传入非数值类型(如字符串)则返回NaN,无参数时返回-Infinity。


<script>
    // Math数学对象 不是一个构造函数 ,所以我们不需要new 来调用 而是直接使用里面的属性和方法即可
    console.log(Math.PI); // 一个属性 圆周率
    console.log(Math.max(1, 99, 3)); // 99
    console.log(Math.max(-1, -10)); // -1
    console.log(Math.max(1, 99, 'pink老师')); // NaN
    console.log(Math.max()); // -Infinity
  </script>

自定义数学对象封装

可以通过对象字面量方式封装自定义数学工具,例如定义包含PI属性、max和min方法的对象。max方法通过遍历arguments参数数组比较大小,返回最大值;min方法逻辑类似,返回最小值。封装后可通过对象名直接调用PI、max和min方法,实现代码复用。


<script>
    // 利用对象封装自己的数学对象 里面有 PI 最大值和最小值
    var myMath = {
      PI: 3.141592653,
      max: function() {
        var max = arguments[0];
        for (var i = 1; i < arguments.length; i++) {
          if (arguments[i] > max) {
            max = arguments[i];
          }
        }
        return max;
      },
      min: function() {
        var min = arguments[0];
        for (var i = 1; i < arguments.length; i++) {
          if (arguments[i] < min) {
            min = arguments[i];
          }
        }
        return min;
      }
    }
    console.log(myMath.PI);
    console.log(myMath.max(1, 5, 9));
    console.log(myMath.min(1, 5, 9));
  </script>

绝对值与取整方法

Math.abs()用于计算绝对值,若参数为字符串会隐式转换为数字,无法转换则返回NaN。取整方法包括:Math.floor()向下取整(向负无穷方向),Math.ceil()向上取整(向正无穷方向),Math.round()四舍五入取整,注意负数的小数部分为0.5时的舍入规则。


<script>
    // 1.绝对值方法
    console.log(Math.abs(1)); // 1
    console.log(Math.abs(-1)); // 1
    console.log(Math.abs('-1')); // 隐式转换 会把字符串型 -1 转换为数字型
    console.log(Math.abs('pink')); // NaN 

    // 2.三个取整方法
    // (1) Math.floor()  地板 向下取整 往最小了取值
    console.log(Math.floor(1.1)); // 1
    console.log(Math.floor(1.9)); // 1
    // (2) Math.ceil()  ceil 天花板 向上取整 往最大了取值
    console.log(Math.ceil(1.1)); // 2
    console.log(Math.ceil(1.9)); // 2
    // (3) Math.round()  四舍五入 其他数字都是四舍五入,但是 .5 特殊 它往大了取 
    console.log(Math.round(1.1)); // 1
    console.log(Math.round(1.5)); // 2
    console.log(Math.round(1.9)); // 2
    console.log(Math.round(-1.1)); // -1
    console.log(Math.round(-1.5)); // 这个结果是 -1
  </script>

<script>
    // 1.Math对象随机数方法  random() 返回一个随机的小数 0 =< x < 1
    // 2. 这个方法里面不跟参数
    // 3. 代码验证 
    console.log(Math.random());
    // 4. 我们想要得到两个数之间的随机整数 并且 包含这2个整数
    // Math.floor(Math.random() * (max - min + 1)) + min;
    function getRandom(min, max) {
      return Math.floor(Math.random() * (max - min + 1)) + min;
    }
    console.log(getRandom(1, 10));
    // 5. 随机点名 
    var arr = ['张三', '张三丰', '张三疯子', '李四', '李思思', 'pink老师'];
    // console.log(arr[0]);
    console.log(arr[getRandom(0, arr.length - 1)]);
  </script>

随机数生成与区间应用

Math.random()生成[0, 1)区间的随机小数。获取[min, max]区间内的随机整数公式为:Math.floor(Math.random() * (max - min + 1)) + min。结合数组索引,可实现随机点名等功能,例如从包含多个姓名的数组中随机选取元素。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章