JavaScript setTimeOut doesn't seem to work like I expect

setTimeout(setColor('yellow'),6000);

You are calling setColor('yellow') and passing the return value (which is undefined) to setTimeout.

You need to pass it a function.


It is also important to note that setTimeout will cause a function to be called after a time. It doesn't make JavaScript sleep for that period.

setTimeout(setColor.bind(window, 'yellow'),6000);
setTimeout(setColor.bind(window, 'red'),6000); 

… will call setTimeout at 0s, then call setTimeout again a fraction of a second later, then call setColor('yellow') at 6s and setColor('red') a fraction of a second after that.