Wpis z mikrobloga

https://jsfiddle.net/5n319twL/

Mam dwie funkcje bardzo do siebie podobne: nest i append.

nest ma za zadanie zagnieżdżać obiekty jeden wewnątrz kolejnego według podanej tablicy.
append ma za zadanie dołączać kolejne wartości z tablicy do tekstu.

Obie funkcje są rekurencyjne.
Obie funkcje zmieniają zmienną na której pracują.

Pytanie:
Dlaczego na koniec obie funkcje zwracają inną wartość z funkcji niż jest w zmiennej? - Patrz logi.
Dlaczego w funkcji nest to obiekt "a" na koniec zwraca prawidłową wartość,
natomiast zupełnie odwrotnie funkcja append - to funkcja zwraca prawidłową wartość a nie zmienna "text"?

#javascript
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@scorpio18k:

Dlaczego w funkcji nest to obiekt "a" na koniec zwraca prawidłową wartość


Bo na sam koniec robisz return obj, który jest ostatnim (pustym) kluczem z tablicy (czyli z). Czyli pierwszy log pokazuje tylko klucz z, a w drugim wołasz
  • Odpowiedz
@scorpio18k: Rozwiązaniem dla nest będzie dodanie trzeciego parametru (który będzie przekazywał referencję do oryginalnej zmiennej).

function nest(obj, props, orgObj) {
if (props.length === 0) return orgObj;
else return nest(obj[props[0]] = {}, props.slice(1), orgObj ||
  • Odpowiedz