Я делаю собственную реализацию forEach в javascript, с единственной целью - лучше понять язык.Чтобы быть более конкретным, временная цель - лучше понять обратные вызовы.
Вот как далеко я продвинулся, пока не застрял.
function myForEach(array, callback) {
for (let i = 0; i < this.length; i++) {
callback(array[i]);
}
}
function callback(element) {
console.log(element); //insert logic
}
const array = [2, 4, 6, 8, 10];
arr.myForEach(array, callback(element));
Я получаю следующую ошибку при запуске в узле:
ReferenceError: element is not defined
at Object.<anonymous> (C:\Users\Jonas\Desktop\FLEXBOX\test.js:54:31)
at Module._compile (module.js:653:30)
at Object.Module._extensions..js (module.js:664:10)
at Module.load (module.js:566:32)
at tryModuleLoad (module.js:506:12)
at Function.Module._load (module.js:498:3)
at Function.Module.runMain (module.js:694:10)
at startup (bootstrap_node.js:204:16)
at bootstrap_node.js:625:3
Я подозреваю, что это потому, что когда функция вызывается, элемент задается как параметрв функции обратного вызова не создается.Что имеет смысл, но реальный цикл forEach при вызове еще не передает созданное значение?
arr.forEach((element /*does not exist yet?*/) => {
console.log(element);
});
Я также пытался вызвать метод с лямбда-выражением, которое также не дает правильного результата.Но другая ошибка
arr.myForEach(array, (element) => {
console.log(element);
});
, тогда выдает ошибку:
TypeError: arr.myForEach is not a function
at Object.<anonymous> (C:\Users\Jonas\Desktop\FLEXBOX\test.js:58:5)
at Module._compile (module.js:653:30)
at Object.Module._extensions..js (module.js:664:10)
at Module.load (module.js:566:32)
at tryModuleLoad (module.js:506:12)
at Function.Module._load (module.js:498:3)
at Function.Module.runMain (module.js:694:10)
at startup (bootstrap_node.js:204:16)
at bootstrap_node.js:625:3