Wartości bez zmiennych&Pobieranie argumentów

0

1.Dana jest funkcja:
function sumFibs(num) { var a = 1; var b = 1; var s = 0; while (a <= num) { if (a % 2 !== 0) { s += a; } a = [b, b=b+a][0]; } return s; } sumFibs(4);

Czy mógłby mi ktoś wytłumaczyć co oznacza ta linijka: a = [b, b=b+a][0]; ? Nie ma tutaj żadnych zmiennych a są wykonywane działania(korzystam z pythontutor.com , żeby wyegzekwować kod). Czy jest prostszy/nowszy sposób na zapisanie tego działania?
2. Dana jest funkcja:
function uniteUnique() { const args = [...arguments]; const uniqueArgs = []; args.forEach(arr => uniqueArgs.push(...arr)); return [...(new Set(uniqueArgs))]; } uniteUnique([1, 3, 2], [5, 2, 1, 4], [2, 1]);

znak...jest po to aby pobrać wszystkie argumenty funkcji? Czy można wtedy użyć np map() czy innej metody pobrania argumentów funkcji?

0

a = [b, b=b+a][0];

Jest to zaciemniona wersja:

a = b;
b += a;

Nie ma tutaj żadnych zmiennych a są wykonywane działania

Co oznacza nie ma tutaj żadnych zmiennych?

wyegzekwować

uruchomić

znak ... jest po to aby pobrać wszystkie argumenty funkcji?

To jest tzw. spread operator: https://developer.mozilla.org/pl/docs/Web/JavaScript/Referencje/Operatory/Spread_operator.

Czy można wtedy użyć np map() czy innej metody pobrania argumentów funkcji?

Niestety nie rozumiem o co pytasz.

0

Dzięki za odp.
Co do spread operator, czy istnieje inna komenda, która jest bardzo podobna do spread operator ?

0

Zależy od kontekstu, np.:

a.push(...b); // ekwiwalent, w przybliżeniu, Array.prototype.push.apply(a, b)

1 użytkowników online, w tym zalogowanych: 0, gości: 1