Estoy tratando de entender por qué cada método que estoy usando devuelve un valor booleano falso. Aquí está mi código:
let box1 = document.querySelector(`.box1`); let box2 = document.querySelector(`.box2`); let box3 = document.querySelector(`.box3`); let array = [box1.value, box2.value, box3.value]; box1.value = `X`; box2.value = `X`; box3.value = `X`; array.every((el) => el === `X`)); // This returns false¿Hay algo que estoy malinterpretando sobre el método every()? Parece que los valores de cada elemento de la matriz satisfacen la condición establecida por el método every(), entonces, ¿por qué devuelve falso?
Porque está cambiando box.value DESPUÉS de haberlo insertado en la matriz.
let box1 = { value: 1 }; let box2 = { value: 2 }; let box3 = { value: 3 }; // since `value` points to a primitive // that primitive is copied into this array // so box1.value and array[0] are both pointing // to an integer 1 but it's not the same integer! // the value is the same but the location in memory is not let array = [box1.value, box2.value, box3.value]; // this will only change the boxes // but won't affect the `array` box1.value = `X`; box2.value = `X`; box3.value = `X`; // since the array contains a copy of each value // from the box, the changes above only affect // the boxes but not the array itself console.log(array); // 1, 2, 3