Одна точка с запятой является операцией NOP:
if(cond0) { /*...*/ }
else if(cond1) ; //is correct and does nothing
else { /*...*/}
Оператор запятой:
a = (++i, k); //eq: ++i; a = k;
Вот тест, который вы можете запустить в Firefox:
var start = +new Date();
var count = 0;
setInterval(function () {
console.log((new Date() - start) % 1000,
++count,
Math.round((new Date() - start)/1000))
}, 1000);
Первое значение должно быть как можно ближе к 0 или 1000 (любое другое значение показывает, насколько «не на месте» время триггера было.) Второе значение - это количество раз, когда код был запущен, а третье значение - сколько раз могло должно было сработать. Вы заметите, что если вы перегружаете свой процессор, он может выйти из строя, но, похоже, он исправляется.
Краткий ответ: Нет, вы не можете быть уверены. Да, это может дрейфовать.
Длинный ответ: Джон Ресиг о Точности времени JavaScript и Как работают таймеры JavaScript .
Из второй статьи:
In Чтобы понять, как таймеры работают внутри, необходимо изучить одну важную концепцию: задержка таймера не гарантируется. Поскольку весь JavaScript в браузере выполняется в одном потоке, асинхронные события (такие как щелчки мышью и таймеры) запускаются только тогда, когда в их исполнении было открытие.
Обе статьи (и все на этом сайте) отлично читаются, поэтому