これは Harmony(ECMAScript 6) 提案の一部であり、実験段階の技術です。
この技術の仕様は安定していません。ブラウザ互換性の一覧表を確認してください。またこれらの構文や動作は、仕様変更などにより、新しいバージョンのブラウザでは変更される可能性があるという点に注意してください。
概要
このメソッドは 2 つの引数をとり、C 言語の様な 32 ビット乗算の結果を返します。
構文
Math.imul(a, b)
引数
a
- 最初の数字
b
- 2 番目の数字
説明
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
次の関数を用いる事により、imul
をサポートしていない環境でもこれをエミュレートする事が出来ます。
// Math.imul の代替関数 function imul(a, b) { var ah = (a >>> 16) & 0xffff; var al = a & 0xffff; var bh = (b >>> 16) & 0xffff; var bl = b & 0xffff; // the shift by 0 fixes the sign on the high part // the final |0 converts the unsigned value into a signed value return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0); }
ブラウザ実装状況
機能 | Firefox (Gecko) | Chrome | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
基本サポート | 20 (20) | 28 | ? | ? | WebKit bug 115143 |
機能 | Firefox Mobile (Gecko) | Android | Chrome for Android | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
基本サポート | 20.0 (20) | ? | ? | ? | ? | WebKit bug 115143 |