Math不是构造函数,不能用new实例化;它是只读静态对象,含常量如PI、E及方法如round、floor、random等,所有方法对非法输入返回NaN而非报错。

JavaScript 的 Math 对象不是构造函数,不能用 new 实例化
Math 是一个内置的、静态的对象,所有属性和方法都直接挂在它上面,没有原型链,也不可被实例化。写 new Math() 会报错:TypeError: Math is not a constructor。它更像一个工具命名空间,而不是传统意义上的“对象”。
常用数学常量:注意精度和用途限制
这些是只读属性,值为 IEEE 754 双精度浮点数,存在固有精度误差(比如 Math.PI 并非数学上的 π 精确值):
-
Math.PI— 圆周率,约 3.141592653589793 -
Math.E— 自然对数的底,约 2.718281828459045 -
Math.LN2—ln(2),约 0.6931471805599453 -
Math.SQRT2— √2,约 1.4142135623730951
不要用它们做高精度科学计算;需要更高精度时应引入专用库(如 decimal.js)。
最常调用的方法:四舍五入、取整、随机数
这些方法接受一个数字参数,返回处理后的数字。注意输入非数值时会先尝试转换(如 Math.round("2.6") → 3),但 null 或 undefined 会转成 NaN,结果也是 NaN:
立即学习“Java免费学习笔记(深入)”;
动态WEB网站中的PHP和MySQL详细反映实际程序的需求,仔细地探讨外部数据的验证(例如信用卡卡号的格式)、用户登录以及如何使用模板建立网页的标准外观。动态WEB网站中的PHP和MySQL的内容不仅仅是这些。书中还提到如何串联JavaScript与PHP让用户操作时更快、更方便。还有正确处理用户输入错误的方法,让网站看起来更专业。另外还引入大量来自PEAR外挂函数库的强大功能,对常用的、强大的包
-
Math.round(x)— 四舍五入到最近整数(.5向正无穷舍入) -
Math.floor(x)— 向下取整(≤ x 的最大整数) -
Math.ceil(x)— 向上取整(≥ x 的最小整数) -
Math.trunc(x)— 截断小数部分(只留整数位,不四舍五入,对负数不同于floor) -
Math.random()— 返回 [0, 1) 区间内的伪随机浮点数(不含 1);生成 [min, max] 整数需组合:Math.floor(Math.random() * (max - min + 1)) + min
开方、幂运算与对数:别混淆 ** 和 Math.pow
Math.pow(base, exp) 和指数运算符 ** 功能一致,但行为略有差异:
- 两者都支持负数底数和分数指数(如
Math.pow(-8, 1/3)返回NaN,因为 JS 不支持复数;而(-8) ** (1/3)同样是NaN) -
Math.sqrt(x)是Math.pow(x, 0.5)的快捷写法,但对负数直接返回NaN(比手写pow更明确) -
Math.log(x)是自然对数(以e为底);要算以 10 为底用Math.log10(x),以 2 为底用Math.log2(x)
注意:Math.pow(0, 0) 返回 1,而 0 ** 0 在 JS 中也等于 1 —— 这是语言规范定义,不是错误。
真正容易出问题的是边界输入:比如 Math.sqrt(-1)、Math.log(-1)、Math.floor(NaN) 全部返回 NaN,且不会抛错,必须主动检查。










