setTimout
ожидает функцию в качестве первого аргумента и время в качестве второго аргумента, а затем необязательные аргументы для передачи в функцию.Итак, если у вас есть функция:
function showGrid( str ) {
return str;
}
и у вас есть следующее setTimeout
:
setTimeout( showGrid( "..." ), 5000 );
, то вы вызываете showGrid
и передаете возвращаемое значение setTimeout
, в итоге получается так:
// "..." is returned from showGrid( "..." )
setTimeout( "...", 5000 );
и "..."
не является функцией.Таким образом, есть два способа обойти это, вы можете сделать вложение (как в ответе Дарина) или добавить аргумент после времени.
setTimeout( function() {
showGrid( "..." );
}, 5000 );
// same thing
setTimeout( showGrid, 5000, "..." );
Пример: http://jsfiddle.net/fFg57/