2015-02-27 4 views
0

Если в Javascript есть рекурсивный вызов, в основном есть 2 способа сделать это. Первый способ бытия -Javascript - рекурсивный вызов

function a() { 
a(); 
} 

и второй путь -

function a() { 
arguments.callee(); 
} 

Вопросы - 1) Его дано во многих местах, что второй путь лучше, чем 1, но нет никакого объяснения.

2) Arguments.callee является устаревшим, какова альтернатива?

3) Есть ли способ вызвать функцию, вызванную self, рекурсивно, и это тоже при анонимной функции. как указано ниже, без использования arguments.callee или любой другой функции внутри него.

console.log((function() { 
//Recursive call...how? 
})() 
); 
+2

Где ты прочитал, что второй способ лучше? Что касается Вопроса 2, вы уже указали альтернативу. – tnw

+1

Возможный дубликат [javascript: рекурсивная анонимная функция?] (Http://stackoverflow.com/questions/3883780/javascript-recursive-anonymous-function) – Tachyon

+0

Я не получил ответ от обоих выше комментариев –

ответ

1

1) Если нет хорошей технической причины для этого (вы сказали, что вы читаете это во многих местах, но не дает никаких ссылок) я нахожу первый способ гораздо лучше, так как это более ясно.

2) Альтернатива - это именно то, что вы назвали «первым путем».

3) Вы уже решили эту проблему, давая имя функции, так что это не является анонимным больше:

console.log((function a() { 
    a(); 
})()); 
+0

Спасибо за ответ, вопрос 3 был отредактирован. pls видит его. –

+0

@kushalbhandari Почему бы вам просто не назвать функцию именем? Я действительно не понимаю произвольное требование, которое вы добавляете. Это кажется ненужным осложнением. – tnw

+0

@tnw - Его вопрос, который я получил от головоломки :) –

Смежные вопросы