En todos los navegadores que probé, con la excepción de Safari Mobile, el siguiente código funciona como se esperaba: cuando se hace clic en un botón, se muestra una alerta. Sin embargo, en Safari Mobile, el cierre no parece estar "cerrando" una variable definida en un bloque if, por lo que la alerta no se dispara.
¿Alguien puede explicar esto?
const button = document.getElementById("clickme"); if (true) { // move this outside of the 'if' block and it works // on Safari Mobile let greeting = "hello world"; function clicked() { alert(greeting); } button.onclick = clicked; }Demostración: https://codepen.io/argmi/pen/poaKgYr