Math.cos() 是 JavaScript 中 Math 对象内置的静态方法,专门用于计算给定数值的余弦值(cosine)。在三角函数的体系里,余弦函数描述的是直角三角形中邻边与斜边的比值,而在单位圆的定义下,它对应的是角度终边与单位圆交点的横坐标。
使用这个方法有一个前提需要特别注意:参数是以弧度(radians)为单位传入的,而不是我们日常生活中习惯的角度(degrees)。我刚开始接触前端动画开发时,好几次把角度直接塞进 Math.cos(),结果动画轨迹不符合预期,排查了半天才发现是单位问题。如果你手头的数据是角度值,记得先用公式 弧度 = 角度 × (Math.PI / 180) 做一次转换。
Math.cos() 的返回值范围固定在 -1 到 1 之间,这个特性让它在归一化计算、波形生成和周期性动画中非常好用。
方法语法
Math.cos(num)
参数说明
num —— 一个以弧度为单位的数值,代表需要计算余弦的角度。
返回值
返回参数 num 的余弦值,结果落在 [-1, 1] 这个闭区间内。余弦函数是一个周期为 2π 的偶函数,这意味着 Math.cos(-x) 始终等于 Math.cos(x)。
代码示例与详细解析
示例一:常规弧度的余弦计算
下面这段代码展示了几个典型弧度值对应的余弦结果。观察输入值与输出结果之间的对应关系,有助于建立起对余弦函数曲线的直观感受。
// 计算不同弧度值的余弦
console.log(Math.cos(1)); // 输出: 0.5403023058681398
console.log(Math.cos(2)); // 输出: -0.4161468365471424
console.log(Math.cos(0.5)); // 输出: 0.8775825618903728
Math.cos(1) 返回约 0.5403,这是 1 弧度(约 57.3 度)对应的余弦值。Math.cos(2) 返回约 -0.4161,因为 2 弧度(约 114.6 度)处于第二象限,余弦值变为负数。这些结果和数学上的余弦函数图像吻合。
示例二:负参数的对称性
余弦函数是一个偶函数,满足 cos(-x) = cos(x)。利用这一性质,当参数符号不确定时也无需额外处理。
// 负弧度值的余弦计算
console.log(Math.cos(-1)); // 输出: 0.5403023058681398
console.log(Math.cos(-0.5)); // 输出: 0.8775825618903728
console.log(Math.cos(-2)); // 输出: -0.4161468365471424
对比示例一的结果可以看出,Math.cos(-1) 和 Math.cos(1) 相等,Math.cos(-2) 也与 Math.cos(2) 一致。这种对称性在编写涉及双向运动的代码时可以简化逻辑——不必担心角度正负带来的符号处理。
示例三:特殊角度值的验证
余弦函数在几个关键角度上有精确的取值,用 JavaScript 验证一下可以加深对函数行为的信任。
// 特殊弧度值的余弦
console.log(Math.cos(0)); // 输出: 1
console.log(Math.cos(Math.PI / 2)); // 输出: 6.123233995736766e-17(约等于 0)
console.log(Math.cos(Math.PI)); // 输出: -1
console.log(Math.cos((3 * Math.PI) / 2));// 输出: -1.8369701987210297e-16(约等于 0)
console.log(Math.cos(2 * Math.PI)); // 输出: 1
Math.cos(0) 返回 1,符合单位圆上角度 0 时横坐标为 1 的定义。Math.cos(Math.PI / 2) 理论上应该是 0,但由于浮点数精度限制,实际返回的是一个极小的科学记数法数值(约 6.12e-17),这在数值计算中可以视为 0。
个人经验分享:如果你需要判断余弦值是否等于某个关键值(比如 0 或 1),直接用 === 比较可能因为浮点误差而失败。比较稳妥的做法是设定一个容差范围,例如 Math.abs(Math.cos(Math.PI / 2)) < 1e-10,来判断是否“足够接近”。
示例四:角度转弧度的实际应用
前面提到过,参数必须以弧度为单位。下面这个例子演示了如何将我们熟悉的角度值转换为弧度,再计算其余弦。
// 角度转弧度后计算余弦
function cosFromDegrees(degrees) {
const radians = degrees * (Math.PI / 180);
return Math.cos(radians);
}
console.log(cosFromDegrees(0)); // 输出: 1(cos 0° = 1)
console.log(cosFromDegrees(60)); // 输出: 0.5000000000000001(cos 60° = 0.5)
console.log(cosFromDegrees(90)); // 输出: 6.123233995736766e-17(cos 90° ≈ 0)
console.log(cosFromDegrees(180)); // 输出: -1(cos 180° = -1)
cosFromDegrees(60) 返回的值接近 0.5,这正是 60 度角的余弦值。cosFromDegrees(90) 由于浮点精度问题返回了一个近似 0 的极小值。在项目中,封装这样一个转换函数会比自己每次手动乘除 Math.PI / 180 更不容易出错。
示例五:构建交互式余弦计算器
借助 HTML 与 JavaScript 的配合,可以快速搭建一个输入角度值、实时查看余弦结果的工具。这个工具对验证自己对余弦函数行为的理解很有帮助。
<label for="angleInput">输入角度(度):</label>
<input type="number" id="angleInput" placeholder="例如 60 或 180" />
<button onclick="computeCosine()">计算余弦</button>
<p>余弦值:<span id="cosineResult"></span></p>
<script>
function computeCosine() {
const inputField = document.getElementById('angleInput');
const outputSpan = document.getElementById('cosineResult');
const angleInDegrees = parseFloat(inputField.value);
if (!isNaN(angleInDegrees)) {
const angleInRadians = angleInDegrees * (Math.PI / 180);
const cosineValue = Math.cos(angleInRadians);
// 对于接近 0 的值做格式化处理,提升可读性
if (Math.abs(cosineValue) < 1e-10) {
outputSpan.textContent = '≈ 0';
} else {
outputSpan.textContent = cosineValue;
}
} else {
outputSpan.textContent = '请输入有效的角度值';
}
}
</script>
这个工具额外加了一个小优化:当余弦值的绝对值小于 1e-10 时,直接显示 “≈ 0”,避免了 6.123233995736766e-17 这种让初学者mō不着头脑的输出。这种细节处理在的用户界面开发中能提升体验。
本节课程知识要点
-
Math.cos(num)计算参数num的余弦值,参数必须是以弧度为单位的数值。 -
返回值严格落在
[-1, 1]区间内,体现了余弦函数的有界性。 -
余弦函数是周期为
2π的偶函数,满足Math.cos(-x) === Math.cos(x)。 -
若输入值为角度,需使用公式
弧度 = 角度 × (Math.PI / 180)先行转换。 -
由于浮点数精度的固有局限,特殊角(如 90°)的余弦结果可能是一个极小值而非精确的 0,实际判断时建议引入容差比较。
-
Math.cos()在信号处理、波形动画、旋转变换以及各类周期性算法的实现中都是基础工具。
余弦函数虽然概念上来自数学课本,但在编程实践中的出场频率比想象中高得多。无论是做 Canvas 动画的缓动曲线、Web Audio 的振荡器波形,还是计算两点间的夹角,Math.cos() 都会反复出现。把弧度和角度的换算练熟,对后续接触更复杂的图形学和物理模拟代码会有直接的帮助。