Помогите найти ошибку в функции js [закрыт]

145
15 марта 2019, 22:10

function make(...args) { 
  var arr = []; 
  args.forEach(i => arr.push(i)) 
  var inner = function(...args2) { 
    args2.forEach(i => { 
      if (typeof i == 'function') { 
        return arr.reduce(i) 
      } else { 
        arr.push(i); 
        return inner; 
      } 
    }); 
  } 
  return inner; 
} 
 
function sum(a, b) { 
  return a + b 
} 
make(1, 5)(5)(sum)

По итогу должно выдать 11, но выдаёт ошибку Где я накосячил ?

Answer 1

Ошибка в том, что return делается из callback, а не из функции, таким образом inner возвращает undefined всегда.

Вместо forEach, здесь проще использовать обычный for

function make(...args) { 
  var arr = []; 
  args.forEach(i => arr.push(i)) 
  var inner = function(...args2) { 
    for (var i = 0; i < args2.length; i++) { 
      if (typeof args2[i] == 'function') { 
        return arr.reduce(args2[i]); 
      } else { 
        arr.push(args2[i]); 
      } 
    }; 
    return inner; 
  } 
  return inner; 
} 
 
function sum(a, b) { 
  return a + b 
} 
console.log(make(1, 5)(5)(sum))

READ ALSO
Функции в JavaScript, Прототипы

Функции в JavaScript, Прототипы

Изучаю JavaScriptЧто значит "

150
Увеличение длины на элемента на JavaScript

Увеличение длины на элемента на JavaScript

Пишу змейку на JavascriptНужно чтобы после прохождения через ячейку где находится еда длина змеи увеличивалась

162
Как обработать события click правильно?

Как обработать события click правильно?

В блоке два одинаковых элемента, нужно обработать события клика так чтобы dropdown открывался только у элемента на который кликнули

208