setTimeout(showDesiredPage(), 600);
не является правильным, оно должно быть
setTimeout(showDesiredPage, 600);
Пожалуйста, обратите внимание на недостающие скобки после функции! Первая строка передает возвращаемое значение вашей функции (сразу же исполнено) в setTimeout, в то время как последний передает надпись , которая затем запускается после 600 мс! Поэтому в первом примере ваш код запускается немедленно, и setTimeout затем пытается вызвать возвращаемое значение вашей функции.
Именно по этой причине вы не можете передавать параметры «очевидным» способом. Если вы хотите сделать это, вам нужно (анонимно) функция обертка
setTimeout(function(){showDesiredPage(desiredPage)}, 600);
Это передает объект функции (= вид такой же, как ссылки на функцию), чтобы SetTimeout, которые затем будут получать Вызывается после 600 мс. Теперь внутри функции вы можете вызвать нужную функцию с параметрами так же, как обычно.
Существует возможность передать параметры напрямую (see MDN:setTimeout), но, к сожалению, этот синтаксис не поддерживается Internet Exploder.
var timeoutID = window.setTimeout(func, delay, [param1, param2, ...]);
спасибо за это, объяснения помогли много – rpsep2