Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.12.2011, 19:29
Аспирант
Отправить личное сообщение для ntro123 Посмотреть профиль Найти все сообщения от ntro123
 
Регистрация: 18.10.2009
Сообщений: 57

Рекурсия анонимной ф-ции
Как сделать рекурсию анонимной функции?

$('#go').live('click', function(){
alert('!');
//рекурсия
});



спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 27.12.2011, 19:44
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Y-комбинатор или arguments.callee.
Ответить с цитированием
  #3 (permalink)  
Старый 27.12.2011, 20:41
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Сообщение от ntro123
$('#go').live('click', function rec(){
alert('!');
rec();
});
Так, например...
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #4 (permalink)  
Старый 27.12.2011, 22:58
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

2 варианта :
  1. используя имя функции (если есть)
    см. вариант от trikadin
  2. используется ссылка на исполняемую функцию. (нет имени у ф-и)
    $('#go').live('click', function (){
        alert('!');
        arguments.callee();
    });
    
Ответить с цитированием
  #5 (permalink)  
Старый 27.12.2011, 23:06
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Сообщение от melky
используется ссылка на исполняемую функцию. (нет имени у ф-и)
Тут неплохо бы добавить, что так в последнее время не рекомендуется делать))
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #6 (permalink)  
Старый 27.12.2011, 23:09
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от trikadin Посмотреть сообщение
Тут неплохо бы добавить, что так в последнее время не рекомендуется делать))
вот ты неплохо и добавил а как ещё вызвать анонимную функцию ?

и вообще, реализовать такое в IE ?

var rec = function *!*recursion*/!*(n){  return n == 1 ? n : n**!*recursion*/!*(n-1);    };


PS он вроде как такое не переваривает : присваивание переменной функции со своим именем и использование этого имени внутри функции.
Ответить с цитированием
  #7 (permalink)  
Старый 27.12.2011, 23:19
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Сообщение от melky
PS он вроде как такое не переваривает : присваивание переменной функции со своим именем и использование этого имени внутри функции.
Попробовал в восьмом - переваривает)
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #8 (permalink)  
Старый 28.12.2011, 07:18
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Сообщение от melky
arguments.callee();
Пардон за оффтоп. Почему callee считается непроизводительным?
Ответить с цитированием
  #9 (permalink)  
Старый 28.12.2011, 09:30
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от melky
он вроде как такое не переваривает
Он такое переваривает, но переменная с именем этой функции попадает во внешний скоп.
(function() {
    (function test() {});
    alert(typeof test == 'undefined' ? 'У вас не IE' : 'У вас IE');
})();
Ответить с цитированием
  #10 (permalink)  
Старый 28.12.2011, 10:33
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

FINoM,
оно не считается не производительным. Просто если этот код случайно попадёт в strict mode, он вызовет ошибку.
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
рекурсия в обратную сторону bugmenot Общие вопросы Javascript 1 29.11.2011 23:45
RegExp очень нужна рекурсия и ссылочность scuter Общие вопросы Javascript 9 18.08.2011 19:27
jQuery, функция animate(), рекурсия xintrea jQuery 12 03.01.2011 12:33
Рекурсия с setTimeout (jQuery) britanik Общие вопросы Javascript 0 24.04.2009 15:36
Рекурсия arseniy-at-home Общие вопросы Javascript 16 07.11.2008 23:18