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.
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 hacerforEach
this
var jow = [5, 10, 45, 67];
jow.forEach(function(v, i, a) {
a[i] = v + 1;
});
console.log(jow);
Salida
[ 6, 11, 46, 68 ]