let outsideVariable = 5; function myFunctionTests(){ let checkBox = document.getElementById("checkTests"); let variableName = 10; if (checkBox.checked == true){ variableName += 1; outsideVariable += 1; console.log('variableName is: ',variableName); console.log('outsideVariable is: ',outsideVariable); } else { variableName -= 1; outsideVariable -= 1; console.log('variableName is: ',variableName); console.log('outsideVariable is: ',outsideVariable); } }Cuando ejecuto este código y marco la casilla de verificación, ambas variables ("variableName" y "outsideVariable") aumentan en 1 (la salida es 11 y 6). Hasta aquí todo bien.
Ahora, cuando desmarco la casilla de verificación, "variableName" baja en 1 (según el valor inicial de 10, por lo que pasa a 9 como se esperaba), pero "outsideVariable" vuelve a 5, en lugar de ir a 4.
La única forma de hacer que "outsideVariable" vaya a 4 es cambiar
variableexterna -= 1;
a
variableexterna -= 2;
¿Alguna razón especial por la que esto sucede? Estoy aprendiendo JavaScript, así que tenlo en cuenta.
quieres cuando la casilla de verificación desmarque, variableName = 10 y outsideVariable = 5, pero son iguales a 9 y 4, ¿verdad? para ese problema, debe definir variableName fuera del alcance como alcance global.