5 of 17 menu

Erro ao modificar elemento de array em JavaScript

Vamos examinar o erro que ocorre ao modificar incorretamente um elemento de um array. Suponha que temos o seguinte array:

let arr = [1, 2, 3, 4, 5];

Suponha também que temos uma função que recebe um número como parâmetro e retorna o quadrado desse número:

function func(num) { return num ** 2; }

Vamos usar um loop for-of para iterar sobre nosso array e aplicar nossa função a cada um de seus elementos:

for (let elem of arr) { elem = func(elem); }

É aqui que iniciantes costumam cometer um erro. A questão é que modificar a variável elem não leva à modificação do elemento no próprio array. Vamos verificar isso:

console.log(arr); // o array não mudou

O array não muda porque a variável elem armazena uma cópia do elemento, e não uma referência a ele. Modificar elem afeta a cópia, mas não o array em si.

Para resolver o problema, é necessário modificar os próprios elementos do array:

for (let i = 0; i < arr.length; i++) { arr[i] = func(arr[i]); } console.log(arr); // agora o array mudou
rokkfrbnuzc