Wpis z mikrobloga

Mam dwa pytania o rekurencję, najpierw trudniejsze dotyczące ES6 i ES5. Przeczytałam właśnie że ES6 ma mechanizm "tail call optymization", którego to ES5 nie ma. Czy w takim razie kod wynikowy, załóżmy z takiego Angulara, będzie w jakimś stopniu wspierany przez przeglądarkę czy też jest to wsparcie tylko dla ES6 i trzeba kombinować z rozpoznawaniem klienta?

Drugie pytanie to bardziej o ograniczenia obliczeniowe silników JavaScript.
Mam programik obliczający silnię i oczywiście po podaniu pewnej dużej wartości (np 171) dostaje Infinity. Czy jest to tylko ograniczenie mojego komputera czy też silnik nie obsłuży większej wartości niż 7.257415615307994e+306?

#javascript #kaczkaprogramuje #webdev
  • 1
@rozowakaczuszka:
Ad. 1 - wg mojej wiedzy dostępne narzędzia nie są w stanie przekształcić rekurencji wykorzystującej TCO na wersję którą udźwigną silniki bez wsparcia dla TCO (choć istnieją sposoby na zasymulowanie tego na poziomie kodu źródłowego (trampolines)) - także musisz targetować silnik wspierający TCO, uzyć wspomnianego zamiennika lub ładować różne wersje w zależności od silnika.

Ad. 2 - Do obliczeń na dużych liczbach używa się specjalnych bubiotek, np https://github.com/MikeMcl/bignumber.js/