alguien podria explicarme esto:
let obj = {name: 'puki'} const arr = [obj] arr[0] === obj // true (same ref address) obj = null console.log(arr) // [{name: 'puki'}]¿Cómo es que la matriz mantiene la referencia obj anterior?
En otras palabras, no está eliminando el objeto, sino el puntero hacia él. Las variables de objeto son en realidad punteros al objeto mismo. Es por eso que puede tener muchos punteros al mismo objeto. Cada uno lo afectará. Pero eliminar un puntero no elimina el objeto a menos que sea el puntero final.
Estás confundiendo una referencia de objeto y el objeto en sí.
En su código, obj es una referencia (una dirección) al objeto real {name: 'puki'}
La matriz también almacena la referencia (la dirección) al objeto real.
Cuando sobrescribe el obj de referencia con null , en realidad no está modificando el objeto real {name: 'puki'} o el destino de la dirección, solo está sobrescribiendo la referencia (puntero) con el puntero/valor nulo. No hay eliminación de referencias en Javascript como existe en C/C++