本文系统梳理 JavaScript 内置对象的核心功能,涵盖 URI 编码中 encodeURI 与 encodeURIComponent 的区别、eval 代码执行机制,以及 Math 对象的数学常量、三角函数、舍入算法和随机数生成公式,帮助开发者掌握常用工具方法。
URI 编码方法
本节介绍 JavaScript 中的 URI 相关处理方法。
JavaScript 提供了 encodeURI() 和 encodeURIComponent() 两个函数用于对统一资源标识符(URI)进行编码处理。
使用 encodeURI() 时,系统不会编码那些在 URI 结构中本身具有特殊意义的字符,例如冒号、正斜杠、问号以及井号等符号将保持原样。
相比之下,encodeURIComponent() 的编码范围更广,它会对所有非标准字符进行编码,适用于编码 URI 中的参数部分。
eval 方法
eval() 方法的主要功能是解析并执行作为字符串参数传入的 JavaScript 代码。
具体实现示例如下:
var msg = "hello world";
eval("alert(msg)"); //输出 "hello world" Math 对象属性与函数
Math 对象提供了丰富的数学常数和计算方法,无需实例化即可直接使用。
Math.E 属性返回自然对数的底数 e 的近似值。
Math.PI 属性返回圆周率 π 的近似值。
Math.SQRT2 属性返回 2 的平方根值。
Math.abs(num) 方法用于返回数值 num 的绝对值。
Math.exp(num) 方法计算 e 的 num 次幂。
Math.log(num) 方法返回数值 num 的自然对数(以 e 为底)。
Math.pow(num, n) 方法返回 num 的 n 次幂。
Math.sqrt(num) 方法返回数值 num 的平方根。
Math.acos(x) 方法返回 x 的反余弦值,单位为弧度。
Math.asin(x) 方法返回 x 的反正弦值,单位为弧度。
Math.atan(x) 方法返回 x 的反正切值,单位为弧度。
Math.atan2(y, x) 方法返回从 x 轴到点 (x, y) 的角度,即 y/x 的反正切值。
Math.cos(x) 方法返回 x 的余弦值,其中 x 为弧度。
Math.sin(x) 方法返回 x 的正弦值,其中 x 为弧度。
Math.tan(x) 方法返回 x 的正切值,其中 x 为弧度。
最大最小值与舍入方法
Math 对象还提供了 max() 和 min() 方法,用于在一组数值中找出最大值和最小值。
代码示例如下:
var max = Math.max(3, 45, 67, 32);
alert(max); //输出 67
var min = Math.min(2, 46, 74);
alert(min); //输出 2 对于小数舍入到整数的需求,Math 对象提供了三种不同的舍入方法。
Math.ceil() 执行向上舍入,即返回大于或等于参数的最小整数。
Math.floor() 执行向下舍入,即返回小于或等于参数的最大整数。
Math.round() 执行四舍五入,根据小数部分决定舍入方向。
具体调用示例如下:
alert(Math.ceil(25.1)); //输出 26
alert(Math.ceil(25.5)); //输出 26
alert(Math.ceil(25.9)); //输出 26
alert(Math.round(25.1)); //输出 25
alert(Math.round(25.5)); //输出 26
alert(Math.round(25.9)); //输出 26
alert(Math.floor(25.1)); //输出 25
alert(Math.floor(25.5)); //输出 25
alert(Math.floor(25.9)); //输出 25 随机数生成
Math.random() 方法用于生成一个介于 0 到 1 之间的随机数,该区间为左闭右开,不包含 0 和 1。
若需在指定范围内生成随机数,可参考以下计算公式:
随机数 = Math.floor(Math.random() * 总数 + 第一个值),其中总数等于第二个值减去第一个值。
实现该逻辑的代码如下:
// 定义获取范围内随机数的函数
function selectFrom(lowerValue, upperValue) {
var count = upperValue - lowerValue + 1;
return Math.floor(Math.random() * count + lowerValue);
}
var num = selectFrom(2, 10);
alert(num); //输出介于 2 到 10 之间的随机整数(包含 2 和 10)