Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Метод не вызывает локальную функцию (https://javascript.ru/forum/misc/32252-metod-ne-vyzyvaet-lokalnuyu-funkciyu.html)

ztm 09.10.2012 04:19

Метод не вызывает локальную функцию
 
Помогите разобраться: метод window.setInterval() совсем отказывается признавать локальную функцию.
window.onload = function(){
alert('firstFunction ');//Отрабатывает
function secondFunction(){
  alert('secondFunction ');
}
secondFunction();//Отрабатывает
window.setInterval('secondFunction()',5000);//А вот тут выдает: "secondFunction is not defined"
}

Я полагаю это из-за области видимости. Как можно локальную функцию(secondFunction) сделать глобальной не вынося ее из первой функции?

Aetae 09.10.2012 08:12

Читайте учебник на этом сайте: http://learn.javacript.ru, он вас научит правильному и современному javascript.

Ответ же на вопрос: если в интервал или таймаут передаётся строка, то оная eval'ится в глобальной области видимости, где, естесно, никакой secondFunction не существует.

Надо делать так:
setInterval(secondFunction,5000);
передавая в интервал нужную функцию напрямую.
Если же требуется указать параметры - можно создать анонимную обёртку:
setInterval(function(){
    secondFunction( 123 )
},5000);


Часовой пояс GMT +3, время: 09:23.