Ошибка setTimeout

207
29 мая 2018, 10:20

Всем привет.

Пытаюсь зациклить выполнение функции JavaScript. Но получаю ошибку -

Uncaught ReferenceError: test is not defined at :1:1.

Что сделал не так?

function test() { 
  console.log('test_'); 
  setTimeout('test()', 1000); 
} 
test();

Answer 1

setTimeout принимает в качестве аргументов функцию и время. Вы передали строку. Нужно вот так

function test() { 
    console.log('test_'); 
  setTimeout(test, 1000); 
} 
test();

Answer 2

Ваш код находится внутри другой функции. Из-за этого функция test не видна в глобальной области видимости.

    
function starter() { 
  function test() { 
    console.log('test_'); 
    setTimeout('test()', 1000); 
  } 
  test(); 
} 
starter();

Без обертки это работает:

    
  function test() { 
    console.log('test_'); 
    setTimeout('test()', 1000); 
  } 
  test();

Поэтому лучше подавать в setTimeout не строку кода, а ссылку на функцию. Это работает независимо от наличия/отсутствия обертки:

function starter() { 
  function test() { 
    console.log('test_'); 
    setTimeout(test, 1000); 
  } 
  test(); 
} 
starter();

READ ALSO
encodeURI() - результат с русскими символами

encodeURI() - результат с русскими символами

Необходимо закодировать строку "тест!" в url с текстом "тест%21", на деле получается "%D1%82%D0%B5%D1%81%D1%82%21"

204
Выбрать текст в кавычках и поместить в span

Выбрать текст в кавычках и поместить в span

Требуется то что в кавычках выделить в spanЗнаю что можно с помощью регулярных выражений

186
Можно ли отправить бекап файла в облако?

Можно ли отправить бекап файла в облако?

Можно ли отправить файл backup/scriptjs на какой-нибудь сервер?

198
Отложенный запуск функции [дубликат]

Отложенный запуск функции [дубликат]

На данный вопрос уже ответили:

182