Замена for и let
В arrow functions
Покажу на примере 1й функции, как заменить цикл for () и инициализацию переменных в стрелочных функциях:
Пример функции вычисления n-го числа Фибоначи с применением деструкторизации:
function fib(n){
let[ x, y ] = [ 0, 1 ];
for (let i=0; i<n; i++) { [ x, y ] = [ y, x+y ] };
return x
}Превращаем этот алгоритм в стрелочную функцию. Цикл можно заменить следующим образом:
for (let i=0; i<n; i++) { ...code... }
// на
[...Array(n)].forEach(i=> ...code...)Локальные переменные объявляем в виде аргументов с дефолтными значениями. В итоге получаем функцию:
const fib = (n, x=0, y=1) => (
[...Array(n)].forEach(i => [ x, y ] = [ y, x+y ]), x
)