以下是老曹总结的关于原生 JavaScript 中 Math
对象的 20 道常用面试题总结,每道题目都附有详细的解释和示例代码,希望对你有所帮助!
1. 如何使用 Math.abs()
方法?
问题: Math.abs(-5)
的输出是什么?
答案:
Math.abs()
返回一个数的绝对值。
console.log(Math.abs(-5)); // 输出: 5
2. Math.ceil()
和 Math.floor()
的区别是什么?
问题: 分别写出 Math.ceil(3.2)
和 Math.floor(3.8)
的结果。
答案:
Math.ceil(x)
返回大于或等于x
的最小整数(向上取整)。Math.floor(x)
返回小于或等于x
的最大整数(向下取整)。
console.log(Math.ceil(3.2)); // 输出: 4
console.log(Math.floor(3.8)); // 输出: 3
3. 如何生成指定范围内的随机数?
问题: 写一个函数,生成 [min, max] 范围内的随机整数。
答案:
可以结合 Math.random()
、Math.floor()
来实现。
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
console.log(getRandomInt(1, 10)); // 示例输出可能是 7
4. Math.round()
的作用是什么?
问题: Math.round(2.6)
和 Math.round(2.4)
的结果分别是什么?
答案:
Math.round(x)
返回四舍五入后的最接近的整数。
console.log(Math.round(2.6)); // 输出: 3
console.log(Math.round(2.4)); // 输出: 2
5. 如何获取两个数的最大值?
问题: 使用 Math.max()
获取 3
, 7
, 2
中的最大值。
答案:
Math.max()
可以传入多个参数,并返回其中最大的一个。
console.log(Math.max(3, 7, 2)); // 输出: 7
6. 如何获取两个数的最小值?
问题: 使用 Math.min()
获取 3
, 7
, 2
中的最小值。
答案:
Math.min()
可以传入多个参数,并返回其中最小的一个。
console.log(Math.min(3, 7, 2)); // 输出: 2
7. Math.sqrt()
的用途是什么?
问题: 计算 Math.sqrt(16)
的值。
答案:
Math.sqrt(x)
返回 x
的平方根。
console.log(Math.sqrt(16)); // 输出: 4
8. 如何计算幂运算?
问题: 使用 Math.pow()
计算 $ 2^3 $ 的值。
答案:
Math.pow(base, exponent)
返回 base
的 exponent
次方。
console.log(Math.pow(2, 3)); // 输出: 8
9. Math.sin()
和 Math.cos()
的参数单位是什么?
问题: Math.sin(Math.PI / 2)
的值是多少?
答案:
Math.sin(x)
和 Math.cos(x)
的参数是弧度值。
console.log(Math.sin(Math.PI / 2)); // 输出: 1
10. Math.E
表示什么?
问题: Math.E
的近似值是多少?
答案:
Math.E
是自然对数的底数,约为 2.71828。
console.log(Math.E); // 输出: 2.718281828459045
11. Math.LN2
和 Math.LN10
的含义是什么?
问题: 解释 Math.LN2
和 Math.LN10
的值。
答案:
Math.LN2
是 2 的自然对数,约为 0.693147。Math.LN10
是 10 的自然对数,约为 2.302585。
console.log(Math.LN2); // 输出: 0.6931471805599453
console.log(Math.LN10); // 输出: 2.302585092994046
12. Math.LOG2E
和 Math.LOG10E
的含义是什么?
问题: 解释 Math.LOG2E
和 Math.LOG10E
的值。
答案:
Math.LOG2E
是以 2 为底的e
的对数,约为 1.4427。Math.LOG10E
是以 10 为底的e
的对数,约为 0.4343。
console.log(Math.LOG2E); // 输出: 1.4426950408889634
console.log(Math.LOG10E); // 输出: 0.4342944819032518
13. Math.PI
的值是多少?
问题: Math.PI
的近似值是多少?
答案:
Math.PI
表示圆周率 π,约为 3.14159。
console.log(Math.PI); // 输出: 3.141592653589793
14. 如何将角度转换为弧度?
问题: 将 90 度转换为弧度。
答案:
公式为:弧度 = 角度 × (π / 180)
function degreesToRadians(degrees) {
return degrees * (Math.PI / 180);
}
console.log(degreesToRadians(90)); // 输出: 1.5707963267948966
15. 如何将弧度转换为角度?
问题: 将 π/2 弧度转换为角度。
答案:
公式为:角度 = 弧度 × (180 / π)
function radiansToDegrees(radians) {
return radians * (180 / Math.PI);
}
console.log(radiansToDegrees(Math.PI / 2)); // 输出: 90
16. Math.trunc()
的作用是什么?
问题: Math.trunc(4.9)
的结果是什么?
答案:
Math.trunc(x)
返回 x
的整数部分,不进行四舍五入。
console.log(Math.trunc(4.9)); // 输出: 4
console.log(Math.trunc(-3.8)); // 输出: -3
17. Math.sign()
的返回值有哪些?
问题: Math.sign(-5)
、Math.sign(0)
、Math.sign(5)
的返回值分别是什么?
答案:
- 如果
x > 0
,返回1
。 - 如果
x < 0
,返回-1
。 - 如果
x == 0
,返回0
。
console.log(Math.sign(-5)); // 输出: -1
console.log(Math.sign(0)); // 输出: 0
console.log(Math.sign(5)); // 输出: 1
18. Math.cbrt()
的作用是什么?
问题: Math.cbrt(27)
的结果是什么?
答案:
Math.cbrt(x)
返回 x
的立方根。
console.log(Math.cbrt(27)); // 输出: 3
19. Math.hypot()
的用途是什么?
问题: Math.hypot(3, 4)
的结果是什么?
答案:
Math.hypot(x, y)
返回直角三角形的斜边长度,即 $ \sqrt{x^2 + y^2} $。
console.log(Math.hypot(3, 4)); // 输出: 5
20. Math.imul()
的作用是什么?
问题: Math.imul(2, 3)
的结果是什么?
答案:
Math.imul(a, b)
返回两个数的 32 位整数乘积。
console.log(Math.imul(2, 3)); // 输出: 6
以上是常见的 20 道与 Math
对象相关的 JavaScript 面试题及其详细解答,适合用于准备前端开发岗位的技术面试,也适合巩固自己的面向对象编程的数学思想,毕竟很多编程语言中math对象的方法都大差不差。
以下是关于 JavaScript Math 对象 的 20 道常见面试题的详细总结表格,包含题目、知识点、代码示例和常见考察点,便于大家快速查阅与复习。
编号 | 题目描述 | 知识点 | 代码示例 | 常见考察点 |
---|---|---|---|---|
1 | Math.abs(-5) 的输出是什么? | 绝对值函数 | console.log(Math.abs(-5)); // 5 | 理解正负数转换 |
2 | Math.ceil(3.2) 和 Math.floor(3.8) 的结果分别是什么? | 向上取整 / 向下取整 | Math.ceil(3.2); // 4 Math.floor(3.8); // 3 | 取整方法的区别 |
3 | 写一个函数生成 [min, max] 范围内的随机整数。 | 随机数生成 | function getRandomInt(min, max) {<br> return Math.floor(Math.random() * (max - min + 1)) + min;<br>} | Math.random() 使用技巧 |
4 | Math.round(2.6) 和 Math.round(2.4) 的结果分别是什么? | 四舍五入 | Math.round(2.6); // 3 Math.round(2.4); // 2 | 理解四舍五入规则 |
5 | 获取 3 , 7 , 2 中的最大值。 | 最大值函数 | Math.max(3, 7, 2); // 7 | 多参数比较 |
6 | 获取 3 , 7 , 2 中的最小值。 | 最小值函数 | Math.min(3, 7, 2); // 2 | 多参数比较 |
7 | 计算 Math.sqrt(16) 的值。 | 平方根 | Math.sqrt(16); // 4 | 数学基本运算 |
8 | 使用 Math.pow() 计算 $ 2^3 $。 | 指数运算 | Math.pow(2, 3); // 8 | 替代 ** 运算符 |
9 | Math.sin(Math.PI / 2) 的值是多少? | 正弦函数 | Math.sin(Math.PI / 2); // 1 | 弧度制理解 |
10 | Math.E 的近似值是多少? | 自然对数底数 | Math.E; // 2.71828... | 数学常量记忆 |
11 | 解释 Math.LN2 和 Math.LN10 的含义。 | 自然对数 | Math.LN2; // 0.6931... Math.LN10; // 2.3025... | 对数概念 |
12 | 解释 Math.LOG2E 和 Math.LOG10E 的含义。 | 对数转换 | Math.LOG2E; // 1.4427... Math.LOG10E; // 0.4343... | 对数转换关系 |
13 | Math.PI 的近似值是多少? | 圆周率 | Math.PI; // 3.14159... | 数学常量记忆 |
14 | 将 90 度转换为弧度。 | 角度转弧度 | function degreesToRadians(degrees) {<br> return degrees * (Math.PI / 180);<br>} | 单位转换公式 |
15 | 将 π/2 弧度转换为角度。 | 弧度转角度 | function radiansToDegrees(radians) {<br> return radians * (180 / Math.PI);<br>} | 单位转换公式 |
16 | Math.trunc(4.9) 的结果是什么? | 截断取整 | Math.trunc(4.9); // 4 | 不进行四舍五入 |
17 | Math.sign(-5) 、Math.sign(0) 、Math.sign(5) 的返回值分别是什么? | 判断符号 | Math.sign(-5); // -1 Math.sign(0); // 0 Math.sign(5); // 1 | 符号判断逻辑 |
18 | Math.cbrt(27) 的结果是什么? | 立方根 | Math.cbrt(27); // 3 | 数学高阶运算 |
19 | Math.hypot(3, 4) 的结果是什么? | 斜边计算 | Math.hypot(3, 4); // 5 | 勾股定理应用 |
20 | Math.imul(2, 3) 的结果是什么? | 32位整数乘法 | Math.imul(2, 3); // 6 | 位运算优化场景 |
总结说明:
- 覆盖范围广:从基础数学函数到高级用法,适合初中级前端开发者。
- 面试高频:如
Math.random()
生成随机数、Math.round()
四舍五入等是笔试或现场编程常见题。 - 可拓展性强:例如
Math.hypot()
、Math.cbrt()
可用于图形算法、科学计算等场景。 - 适合背诵+练习:建议配合实际编写代码验证,加深理解。
- 地图开发:在百度,高德,腾讯地图的前端开发中,Math对象的方法是家常便饭,老曹的数个地图项目里,Math对象是百分之百会用到。