El contexto de invocación (este) de la llamada a la función forEach

Me preguntaba cuál es el valor «esto» (o contexto de invocación) de la función de devolución de llamada forEach. Este código no parece funcionar:

var jow = [5, 10, 45, 67];

jow.forEach(function(v, i, a){

    this[i] = v + 1;

});

alert(jow);

Thx por explicármelo.

Respuestas:5 Respuestas 5
Tiempo:hace 8 años, 10 meses
Última modificación:hace 3 años, 6 meses

Solución

MDN establece:

array.forEach(callback[, thisArg])

Si se proporciona un parámetro thisArg a forEach, se usará como el valor de este para cada invocación de devolución de llamada como si se llamara a callback.call(thisArg, element, index, array). Si thisArg es indefinido o nulo, este valor dentro de la función depende de si la función está en modo estricto o no (valor pasado si está en modo estricto, objeto global si está en modo no estricto).

Entonces, en resumen, si solo proporciona la devolución de llamada y está en modo no estricto (el caso que presentó), será el objeto global (ventana).

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach

Otras respuestas

Si no pasa el segundo parámetro a , apuntará al objeto global. Para lograr lo que estabas tratando de hacerforEachthis

var jow = [5, 10, 45, 67];

jow.forEach(function(v, i, a) {
    a[i] = v + 1;
});

console.log(jow);

Salida

[ 6, 11, 46, 68 ]

Deja un comentario