Safari 没有正确设置 JavaScript 变量

Safari doesn't set the JavaScript variable properly

我使用的是 Safari 12.0.3。我有:

function doThisOnlyOnce() {
  if (MyNamespace.firstUserGesture) {
    console.log('Do stuff only once!')
  }
  MyNamespace.firstUserGesture = false
}

function init() {
  window.MyNamespace = {} // Easy access to some vars.
  MyNamespace.firstUserGesture = true

  MyNamespace.vid = document.getElementById("vid")
  MyNamespace.vid.addEventListener('click', doThisOnlyOnce)
}
<body onload="init()">
  <div id="vid">x</div>
</body>

问题

在 Safari 上,每次点击 doThisOnlyOnce() 是 运行。 MyNamespace.firstUserGesture 根本没有 设置为 false

在任何其他浏览器上 doThisOnlyOnce() 仅在首次点击时 运行,正如预期的那样。

我错过了什么?

使用 Safari JS 调试器逐行检查代码表明 doThisOnlyOnce 函数的语句之一抛出异常。删除异常原因,也删除了这个奇怪的行为。