Math.imul()

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

Math.imul() 静态方法返回 C 语言风格的 32 位整数乘法运算结果。

试一试

console.log(Math.imul(3, 4));
// Expected output: 12

console.log(Math.imul(-5, 12));
// Expected output: -60

console.log(Math.imul(0xffffffff, 5));
// Expected output: -5

console.log(Math.imul(0xfffffffe, 5));
// Expected output: -10

语法

js
Math.imul(a, b)

参数

a

第一个数字。

b

第二个数字。

返回值

给定参数的 C 语言风格 32 位整数乘法运算结果。

描述

Math.imul() 允许进行具有 C 语言风格语义的 32 位整数乘法。此功能对于 Emscripten 等项目非常有用。

因为 imul()Math 的静态方法,所以您总是使用 Math.imul() 来调用它,而不是通过您创建的 Math 对象的方法来调用(Math 不是构造函数)。

如果您在 imul() 中使用普通的 JavaScript 浮点数,性能会下降。这是因为将浮点数转换为整数进行乘法运算,然后再将乘积转换回浮点数是一个耗时的过程。然而,对于 asm.js,它允许 JIT 优化器更确信地在 JavaScript 中使用整数,使用 imul() 乘法两个内部存储为整数(这仅通过 asm.js 实现)的数字,性能可能会更高。

示例

使用 Math.imul()

js
Math.imul(2, 4); // 8
Math.imul(-1, 8); // -8
Math.imul(-2, -2); // 4
Math.imul(0xffffffff, 5); // -5
Math.imul(0xfffffffe, 5); // -10

规范

规范
ECMAScript® 2026 语言规范
# sec-math.imul

浏览器兼容性

另见