У вас проблема с областью видимости: showMessage()
отображается только в анонимной функции, но когда оценивается параметр setTimeout()
, среда выполнения уже вышла из области.
Используйте функцию непосредственно в качестве аргумента для setTimeout()
и избавьтесь от злой оценки строки [TM]:
setTimeout(showMessage, 1000);