带有块作用域变量的 Safari 错误?

Rob*_*obG 6 javascript safari closures scope let

我正在测试是否可以使用块作用域来替换 IIFE 以通过闭包创建“私有”变量。它一直运行良好,直到在 Safari 11.0.3 (11604.5.6.1.1) 中进行测试,该版本支持块作用域,但存在块和闭包的错误,例如:

{
  let i = 0;
  function getNext() {
    return i++;
  }
}
// Chrome and Firefox
console.log(getNext()); // 0
console.log(getNext()); // 1
// Safari
console.log(getNext()); // ReferenceError: Can't find variable: i
Run Code Online (Sandbox Code Playgroud)

除了继续使用 IIFE 之外,还有其他解决方法吗?或者 Safari 是否正确而其他人都有错误?

附注。在严格模式下,getNext也没有在块外定义。