我正在测试是否可以使用块范围来替换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

除了继续使用IIFE之外还有其他工作吗?或者Safari是否正确,其他人都有错误?
PS。在严格模式下, getNext 也不在块外定义。