Если ваш второй пример, вы не передаете функцию.
Вы вызываете alert
и передаете возвращаемое значение (и возвращаемое значениеalert
не является функцией).
Ссылки на функции не заканчиваются на (…)
setTimeout(function () { alert("Hello, world"); }, 5000);
Или, при более слабой поддержке браузера, передайте аргументы для оповещения в массиве кактретий аргумент для setTimeout .:
setTimeout(alert, 5000, ["Hello, world"]);