Este es mi código.
var scoreResults = document.querySelectorAll(".flex-blackjack-row-1 h3"); var scores = document.querySelector(".flex-blackjack-row-1 span"); const config = {childList: true}; const busted = function (mutationList, observer){ var bustedMessage = document.createElement('h2'); bustedMessage.textContent = 'BUSTED!'; scoreResults[0].before(bustedMessage); hitButton.setAttribute('disabled', 'true'); } const observer = new MutationObserver(busted); observer.observe(scores, config);He definido la variable bustedMessage en una función de devolución de llamada y quiero usarla fuera de esa función de devolución de llamada. Aún después de invocar con éxito la función reventada (eso significa aún después de iniciar la variable bustedMessage ), esa variable no se puede usar fuera de la función de devolución de llamada.
Pero cuando saco este bloque de código,
var bustedMessage = document.createElement('h2'); bustedMessage.textContent = 'BUSTED!';al exterior de la función de devolución de llamada "rota" , también puedo usar la variable bustedMessage en otras funciones. Por favor, explique por qué sucede esto. No puedo entenderlo porque bustedMessage es una variable de tipo var que debe usarse en cualquier lugar.
Definir bustedMessage afuera primero
var bustedMessage; const busted = function (mutationList, observer){ bustedMessage = document.createElement('h2'); bustedMessage.textContent = 'BUSTED!'; scoreResults[0].before(bustedMessage); hitButton.setAttribute('disabled', 'true'); } ahora puede usar bustedMessage en cualquier parte de este script, por supuesto, no está definido hasta que llame a busted por primera vez.