On every browser I've tested, with the exception of Safari Mobile, the following code works as expected: when a button is clicked, an alert is shown. However, on Safari Mobile, the closure doesn't appear to be "closing over" a variable defined in an if-block, and so the alert doesn't fire.
Can someone explain this?
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;
}