forEach не определено - почему? - PullRequest
0 голосов
/ 26 сентября 2019

В Красноречивый JavaScript , 1-е издание, стр. 77, он дает пример построения функции отображения с нуля:

function mapFunc(func, array) {
var result = []; // not touching the original!
console.log("array:", array)
forEach(array, function(element) {
    result.push(func(element));
    });
    return result;
}

Кажется довольно простым, но когда он запускается так:

console.log(mapFunc(Math.round, [0.01, 2, 9.89, Math.PI]))

Выдает ошибку:

ReferenceError: forEach is not defined

Даже когда я изменяю вещи в соответствии с синтаксисом es6, та же проблема:

array.forEach(function(element) {
    result.push(func(element))
    console.log(element)
})

I 'мы долго возились с ним и не можем понять, в чем может быть проблема или почему forEach внезапно становится неопределенным.Мысли?

1 Ответ

2 голосов
/ 26 сентября 2019

Вам нужно использовать array.forEach, и вам нужно правильно позвонить mapFunc().Вы передаете массив как второй аргумент console.log(), а не mapFunc().

function mapFunc(func, array) {
  var result = []; // not touching the original!
  console.log("array:", array)
  array.forEach(function(element) {
    result.push(func(element));
  });
  return result;
}

console.log(mapFunc(Math.round, [0.01, 2, 9.89, Math.PI]));

Книга определяет собственную функцию forEach() ранее в этой главе.

function forEach(array, action) {
  for (var i = 0; i < array.length; i++)
    action(array[i]);
}

Если вы добавите эту функцию в свой код, выдолжна быть в состоянии использовать функцию mapFunc(), как вы ее впервые написали.Но в любом случае вам нужно правильно позвонить mapFunc().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...