1) Close my computer without closing the browser. When I open my computer again, if the timer should have been triggered during the period that my computer is closed, the timer will be immediately fired. If you use setInterval, the next fire will be t (the interval you set) after this fire, and so on.
2) Tune the clock forwards. This will cause exactly the same situation as previous.
3) Tune the clock backwards. This will cause the most problem in my opinion. If you tune t_i backwards, your next fire will be in (t_i + t_left) where t_left means the time left to fire if you didn't tune the clock.
4) Change the local time zone. Nothing is changed except an additional time zone stamp if you print the Date() object in javascript.
To sum up, javascript timers are totally based local clock, they are not real clocks, but just comparing to the local clock periodically...