var arr = [1,2,3,4,5] for (var i = 2; i < arr.length; i++) { [arr[i], arr[i+1]] = [arr[i+1], arr[i]] } console.log(arr);No tengo idea de por qué esto es un bucle infinito ...
Ejecutar esto le dará una idea de lo que sucede.
async function inifiniteLoop() { var arr = [1, 2, 3, 4, 5]; for (var i = 2; i < arr.length; i++) { [arr[i], arr[i + 1]] = [arr[i + 1], arr[i]]; console.log(arr); console.log(`i: ${i}; arr.length: ${arr.length}`); await sleep(2000); } } function sleep(ms) { return new Promise((resolve) => setTimeout(resolve, ms)); } (async () => await inifiniteLoop())(); Si bien obtendría una excepción IndexOutOfBounds en Java y muchos otros lenguajes, esto funciona en JavaScript.
const array = [34] console.log(array) array[3] = 23 console.log(array)