Просмотр полной версии : Рекурсия анонимной ф-ции
Как сделать рекурсию анонимной функции?
$('#go').live('click', function(){
alert('!');
//рекурсия
});
спасибо.
B@rmaley.e><e
27.12.2011, 19:44
Y-комбинатор или arguments.callee.
trikadin
27.12.2011, 20:41
$('#go').live('click', function rec(){
alert('!');
rec();
});
Так, например...
2 варианта :
используя имя функции (если есть)
см. вариант от trikadin
используется ссылка на исполняемую функцию. (нет имени у ф-и)
$('#go').live('click', function (){
alert('!');
arguments.callee();
});
trikadin
27.12.2011, 23:06
используется ссылка на исполняемую функцию. (нет имени у ф-и)
Тут неплохо бы добавить, что так в последнее время не рекомендуется делать))
Тут неплохо бы добавить, что так в последнее время не рекомендуется делать))
вот ты неплохо и добавил :) а как ещё вызвать анонимную функцию ?
и вообще, реализовать такое в IE ?
var rec = function *!*recursion*/!*(n){ return n == 1 ? n : n**!*recursion*/!*(n-1); };
PS он вроде как такое не переваривает : присваивание переменной функции со своим именем и использование этого имени внутри функции.
trikadin
27.12.2011, 23:19
PS он вроде как такое не переваривает : присваивание переменной функции со своим именем и использование этого имени внутри функции.
Попробовал в восьмом - переваривает)
arguments.callee();Пардон за оффтоп. Почему callee считается непроизводительным?
он вроде как такое не переваривает
Он такое переваривает, но переменная с именем этой функции попадает во внешний скоп.
(function() {
(function test() {});
alert(typeof test == 'undefined' ? 'У вас не IE' : 'У вас IE');
})();
Nekromancer
28.12.2011, 10:33
FINoM,
оно не считается не производительным. Просто если этот код случайно попадёт в strict mode, он вызовет ошибку.
Просто если этот код случайно попадёт в strict mode, он вызовет ошибку.
потому что считается непроизводительным. Просто JIT компиляторы его почему-то не могут заоптимизировать. Что-то у них там не сходится.
Nekromancer
28.12.2011, 10:44
Kolyaj,
странно вообще.
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot