¿Cómo puedo hacer que esta variable no se use fuera del alcance? Sigo recibiendo este error en JSFiddle: 'variable' Used out of scope . No sé qué significa eso o por qué ocurre. Intenté arreglarlo yo mismo y eso empeoró las cosas. Busqué en Internet y no pude encontrar nada, por lo que el desbordamiento de pila fue mi último recurso. De todos modos, aquí está mi código. O, si no prefiere JSFiddle, aquí:
var dollar = 0; var cents = 0; function plusOne() { if (cents < 95) { var cents = cents + 5; document.getElementById("amount").innerHTML = cents + " ¢"; } else if (cents == 95) { var dollar = 1; document.getElementById("amount").innerHTML = dollar + " $"; } else if (cents == 100) { var cents = 0; var dollar = dollar + 0.05; document.getElementById("amount").innerHTML = dollar + " $"; } } <button onclick="plusOne()">Plus five cents</button> <p id="amount">0 ¢</p>Como puede ver, no cambia el valor en absoluto. No sé qué está pasando con eso.
Según MDN ( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var )
La instrucción var declara una variable de ámbito de función o de ámbito global y, opcionalmente, la inicializa en un valor.
El caso aquí es que cada vez que se ejecuta la función plusOne , crea una nueva variable con el nombre cents o dollar o both , cuyo alcance se vincula a la función plusOne .
Una forma más óptima de escribir su función es, en lugar de declarar una nueva variable, cambiar el valor de sus variables ya existentes.
p.ej
var dollar = 0; var cents = 0; function plusOne() { if (cents < 95) { cents = cents + 5; document.getElementById("amount").innerHTML = cents + " ¢"; } else if (cents == 95) { dollar = 1; document.getElementById("amount").innerHTML = dollar + " $"; } else if (cents == 100) { cents = 0; dollar = dollar + 0.05; document.getElementById("amount").innerHTML = dollar + " $"; } }No puedes sobre declarar las var's
var dollar = 0; var cents = 0; function plusOne() { if (cents < 95) { cents = cents + 5; document.getElementById("amount").innerHTML = cents + " ¢"; } else if (cents == 95) { dollar = 1; document.getElementById("amount").innerHTML = dollar + " $"; } else if (cents == 100) { cents = 0; dollar = dollar + 0.05; document.getElementById("amount").innerHTML = dollar + " $"; } } <button onclick="plusOne()">Plus five cents</button> <p id="amount">0 ¢</p>Al principio intente no declarar variables usando var. Use 'const' cuando conozca el valor y este valor es constante; de lo contrario, use 'let'.
let dollar = 0; let cents = 0; function plusOne() { if (cents < 95) { cents += 5; document.getElementById("amount").innerHTML = cents + " ¢"; } else if (cents == 95) { dollar = 1; document.getElementById("amount").innerHTML = dollar + " $"; } else if (cents == 100) { cents = 0; dollar =+ 0.05; document.getElementById("amount").innerHTML = dollar + " $"; } }