Единственное отличие, которое я вижу в карте и foreach, состоит в том, что map возвращает массив, а forEach - нет. Однако я даже не понимаю последнюю строку метода forEach "func.call(scope, this[i], i, this);". Например, не относится ли "this" и "scope" к одному и тому же объекту и не относится ли this[i] и i к текущему значению в цикле?
Я заметил, что в другом сообщении кто-то сказал: "Используйте forEach, когда вы хотите что-то сделать на основе каждого элемента списка. Например, вы можете добавлять вещи на страницу. По сути, это здорово, когда вы" побочные эффекты". Я не знаю, что подразумевается под действием побочных эффектов.
Array.prototype.map = function(fnc) {
    var a = new Array(this.length);
    for (var i = 0; i < this.length; i++) {
        a[i] = fnc(this[i]);
    }
    return a;
}
Array.prototype.forEach = function(func, scope) { 
    scope = scope || this; 
    for (var i = 0, l = this.length; i < l; i++) {
        func.call(scope, this[i], i, this); 
    } 
}
Наконец, существуют ли какие-либо реальные применения этих методов в javascript (поскольку мы не обновляем базу данных), кроме как манипулировать такими цифрами:
alert([1,2,3,4].map(function(x){ return x + 1})); //this is the only example I ever see of map in javascript.
Спасибо за любой ответ.
