W jaki sposób można zdefiniować parę funkcji, które wywołują się nawzajem w JavaScript, aby JS-lint nie skarżył się, że "silnia" jest używana przed zdefiniowaniem?odwołania kołowe między funkcjami javascript
function factorial1(n) { return factorial(n); }
function factorial(n) { return n === 0 ? 1 : n * factorial1(n - 1); }
Wygląda na to, że nie ma ważnej kolejności, która spełni wymagania JSlint. (Jeden może być osadzony w drugim, ale byłby to koszmar dla zbioru funkcji, które wszyscy nazywają się nawzajem).
Z pewnością jest to obsługiwane przez prawo do tłumaczenia? Czy to tylko błąd w JSlint? (To pytanie musiało gdzieś zostać odebrane, ale nie mogę go znaleźć!)
Prawdopodobnie miałeś na myśli 'n === 0? 1: ... '. Co też nie działa (z wyjątkiem błędu logicznego, który już wskazałem)? – Dogbert
>> Z pewnością jest to obsługiwane przez prawo języka? Generalnie po pewnym czasie Twoja strona przestaje reagować, a przeglądarka wyświetla komunikat wyskakujący z prośbą o zatrzymanie skryptu lub kontynuację. – mohkhan
@dobert tak, twoja edycja jest poprawna. ale prawdziwym problemem jest to, że JSlint narzeka, że "silnia" jest punktem odniesienia, zanim zostanie zdefiniowana. –