Это экспериментальная технология, часть предложения Harmony (ECMAScript 6).
Поскольку спецификация этой технологии ещё не стабилизировалась, проверьте таблицу совместимости её использования в различных браузерах. Также обратите внимание, что синтаксис и поведение экспериментальной технологии могут быть изменены в будущих версиях браузеров в соответствии с изменениями в спецификации.
Сводка
Метод Math.imul() возвращает результат перемножения в стиле C двух 32-битных чисел.
Синтаксис
Math.imul(a, b)
Параметры
a- Первое число.
b- Второе число.
Описание
Метод Math.imul() позволяет выполнять быстрое перемножение двух 32-битных чисел с семантикой C. Эта возможность полезна для таких проектов, как Emscripten. Поскольку метод imul() является статическим методом объекта Math, вы всегда должны использовать его как Math.imul(), а не пытаться вызывать метод на созданном экземпляре объекта Math (поскольку объект Math не является конструктором).
Примеры
Пример: использование метода Math.imul()
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
Полифилл
Этот метод может эмулироваться следующим способом:
Math.imul = Math.imul || function(a, b) {
var ah = (a >>> 16) & 0xffff;
var al = a & 0xffff;
var bh = (b >>> 16) & 0xffff;
var bl = b & 0xffff;
// сдвиг на 0 бит закрепляет знак в старшей части числа
// окончательный |0 преобразует беззнаковое значение обратно в знаковое значение
return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0);
};
Спецификации
| Спецификация | Статус | Комментарии |
|---|---|---|
| ECMAScript 2015 (6th Edition, ECMA-262) Определение 'Math.imul' в этой спецификации. |
Стандарт | Изначальное определение. |
Совместимость с браузерами
| Возможность | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| Базовая поддержка | 28 | 20 (20) | ? | 16 | 7 |
| Возможность | Android | Chrome для Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| Базовая поддержка | ? | ? | 20.0 (20) | ? | ? | iOS 7 |