So that depends...
Firstly, there is no guarantee that your timer will be executed at an exact moment in time. See both whatWG spec and NodeJS Timers docs. JS generally operates in a single thread with a loop in which things occur. If you schedule many things, things will be delayed. Furthermore, this loop can also be paused, as noted by nxtwrld.
Secondly there seem to be no standard that says exactly how to implement this. Timers are added to a global map of active timers and values in that map are "DOMHighResTimeStamp" which might be a Unix timestamp, but doesn't have to be.
https://w3c.github.io/hr-time/#dom-domhighrestimestamp
The DOMHighResTimeStamp type is used to store a duration in milliseconds. Depending on its context, it may represent the moment that is this duration after a base moment like a time origin or the Unix epoch.
So as you can see if the value is a Unix timestamp then checking the timestamp against system clock is a logical thing to do. In which case setTimeout would be affected by system clock changes.
See also: