TypeError: squareGen is not a function

311
27 ноября 2017, 20:24

Выполняю простое решение задач, но попался на распространненую ошибку и не могу понять почему так. Прошу объяснить. Код длинный состоящий из 4-х частей. Ошибка возникает в четвертой части (task-4). При проверке typeof, squareGen === 'number'. Почему 'number'? Всем спасибо!

// task-1 
function sequence(start, step) { 
  step = step || 1; 
  start = start || 0; 
  let flag = false, 
    firstStep = 0; 
  return function() { 
    if (flag) { 
      return start += step; 
    } else { 
      flag = true; 
      return start += firstStep; 
    } 
 
  } 
} 
var generator = sequence(10, 3); 
var generator2 = sequence(7, 1); 
var generator3 = sequence(0, 2); 
 
// task-2 
 
function take(fn, steps) { 
  let array = []; 
  for (let i = 0; i < steps; i++) { 
    array.push(fn()); 
  } 
  return array; 
} 
 
// task-3 
 
function square(x) { 
  return x * x; 
} 
console.log(map(square, [1, 2, 3, 4])); // [1, 4, 9, 16] 
console.log(map(square, [])); // [] 
var arr = [1, 2, 3]; 
console.log(map(square, arr)); // [1, 4, 9] 
console.log(arr); // [1, 2, 3] 
 
function map(fn, array) { 
  let mas = array, 
    newArray = []; 
  mas.forEach(function(el) { 
    newArray.push(fn(el)); 
  }); 
  return newArray; 
} 
 
// task-4 
 
function fmap(a, gen) { 
  let resultOfGen = gen(); 
  return a(resultOfGen); 
} 
 
var gen = sequence(1, 1); 
var squareGen = fmap(square, gen); 
squareGen(); 
console.log(typeof squareGen); 
console.log(squareGen()); // 1 
console.log(squareGen()); // 4 
console.log(squareGen()); // 9 
console.log(squareGen()); // 16

READ ALSO
$routeProvider (templateUrl) и $route.reload()

$routeProvider (templateUrl) и $route.reload()

Здравствуйте! Возникла проблема с данным кодом: appconfig(['$routeProvider', function ($routeProvider, $route, $routeParams, $templateCache) { $routeProvider

259
Выпадающее меню с под меню

Выпадающее меню с под меню

Создал вертикальный аккордеон так что отрытии второго вертикального элемента в списке, закрывается предыдущий это хорошо, но плохо что при...

254
AngularJS, 3 кнопки которые меняют друг друга

AngularJS, 3 кнопки которые меняют друг друга

Есть 3 кнопки, 2 из которых скрытыПри нажатии на кнопку, первая кнопка скрывается, появляется вторая

284
&ldquo;Функция - объект первого класса&rdquo; - почему?

“Функция - объект первого класса” - почему?

В различной литературе (в частности на википедии, у Стефанова, у Сошникова) функции в JavaScript называют "объектами первого класса"Понятно, что...

238