Это совершенно безопасно.
(Как указывает РобГ, я не предоставил ссылку на сами правила моста DOM / JS, и он настаивает на осторожности. Я полагаю, что FWIW - но я не имею ни малейшего упоминания о том, что ToInteger
является частью моста интерфейса. Вот jsfiddle , показывающий время ожидания, передаваемое в виде строки, числа с плавающей точкой и интеграла (того же типа, что и числа с плавающей точкой в JS), который отлично работает в FF8 и IE9. Обратная связь приветствуется.)
Это потому, что интерфейс DOM принимает только целые числа для задержки в setTimeout/setInterval
- да, они определены в DOM, а не в ECMAScript. Значение задержки сначала соответствующим образом преобразуется в целое значение (и в этом аспекте вызывается функция [JS-internal] ToInteger
, которая выполняет усечение *).
Тем не менее, номера примеров на самом деле дадут слегка отличающиеся результаты (хотя это может быть незаметно): -)
Это потому, что 50/3
(16.66andsomemore
-> 16
) и 17
указывают разные таймауты .
Удачного кодирования.
*ToInteger
определяется как sign(number) * floor(abs(number))
, исключая особые случаи. См. Раздел 9.4 спецификации ECMAScript 5-го издания.