Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   вызов функции из этой же функции (https://javascript.ru/forum/css-html/8103-vyzov-funkcii-iz-ehtojj-zhe-funkcii.html)

Jekel 08.03.2010 03:47

вызов функции из этой же функции
 
Возможна ли такая операция?
Именно вызов фунции из этой же функции...start();
function start(){
	if(XMLHttpRequestObjectTwo){
		XMLHttpRequestObjectTwo.open("GET", "reset.php?data=0");
		XMLHttpRequestObjectTwo.onreadystatechange = function(){ 
		if(XMLHttpRequestObjectTwo.responseText=="1"){
		    getData();
		}else{
		    start();
		}
		}
		XMLHttpRequestObjectTwo.send(null);
	}
}

B@rmaley.e><e 08.03.2010 09:03

Вызов функцией самой себя (рекурсия) — один из фундаментальных принципов программирования.
Конечно же JS разрешает такое.

subzey 08.03.2010 11:07

А вот тут написано, как.

Jekel 08.03.2010 11:32

http://javascript.ru/forum/ajax/8105...ya-rabota.html

Kolyaj 09.03.2010 08:35

Цитата:

Сообщение от B@rmaley.e><e
Вызов функцией самой себя (рекурсия) — один из фундаментальных принципов программирования.

Только в данном случае нет рекурсии.

B@rmaley.e><e 09.03.2010 12:37

В чистом виде нет, но что-то от нее есть. Все-таки будучи единожды запущенной, она будет запускаться вновь и вновь, пока не получит нужный результат.

Kolyaj 09.03.2010 13:14

Цитата:

Сообщение от B@rmaley.e><e
В чистом виде нет, но что-то от нее есть.

Что значит что-то есть? Рекурсия или есть или её нет. Тут её нет, т.к. start не сама себя вызывает, а её вызывает безымянная функция, которую start, опять же не вызывает, а только создаёт.

Цитата:

Сообщение от B@rmaley.e><e
Все-таки будучи единожды запущенной, она будет запускаться вновь и вновь, пока не получит нужный результат.

Странная логика.

B@rmaley.e><e 09.03.2010 17:01

Цитата:

Сообщение от Kolyaj
Что значит что-то есть? Рекурсия или есть или её нет. Тут её нет, т.к. start не сама себя вызывает, а её вызывает безымянная функция, которую start, опять же не вызывает, а только создаёт.

Листаем википедию
Цитата:

В программировании рекурсия — вызов функции (процедуры) из неё же самой, непосредственно (простая рекурсия) или через другие функции (сложная рекурсия), например, функция A вызывает функцию B, а функция B — функцию A. Количество вложенных вызовов функции или процедуры называется глубиной рекурсии.

Kolyaj 09.03.2010 17:05

А теперь читаем моё сообщение ещё раз
Цитата:

Сообщение от Kolyaj
а её вызывает безымянная функция, которую start, опять же не вызывает, а только создаёт.


B@rmaley.e><e 09.03.2010 18:34

Функция вызывает метод send, который вызывает onreadystatechange.


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