该特性处于 ECMAScript 6 规范草案中,目前的实现在未来可能会发生微调,请谨慎使用。
概述
该函数返回两个参数的类C的32位整数乘法运算的运算结果.
语法
Math.imul(a, b)
参数
a
- 被乘数.
b
- 乘数.
描述
Math.imul
可以进行快速的,类C语义的32位整数乘法.该特性对于一些项目比如Emscripten很有用.
例子
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
Polyfill
下面的JavaScript代码可以实现该函数:
function imul(a, b) { var ah = (a >>> 16) & 0xffff; var al = a & 0xffff; var bh = (b >>> 16) & 0xffff; var bl = b & 0xffff; // 右移0位可以修复高位的符号位 return (al * bl) + (((ah*bl+al*bh)<<16)>>>0); }
浏览器兼容性
Feature | Firefox (Gecko) | Chrome | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | 20 (20) | ? | ? | ? | ? |
Feature | Firefox Mobile (Gecko) | Android | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|
Basic support | 20.0 (20) | ? | ? | ? | ? |