Mozilla Возможный Let vs var Bug

Пожалуйста, рассмотрите следующий код JavaScript:

let funcs = []
for(let x of [1,2,3]) {
    funcs[x] = function(){
        console.log("test:", x)
    }
}

funcs[1]()
funcs[2]()
funcs[3]()

Когда я запускаю этот код в Google Chrome V55.0, он генерирует ожидаемый результат

test: 1
test: 2
test: 3

в консоли браузера. Однако, если я запускаю тот же код в Firefox V50.1.0, я получаю следующий вывод консоли:

test: 3
test: 3
test: 3

Ссылка здесь (примерно треть пути вниз в «Block Scope with Let») предполагает, что вывод консоли Chrome правильный, но я хотел бы использовать один и тот же код в обоих браузерах. Может ли кто-нибудь указать, если я где-то ошибся?


person d3newguy    schedule 16.01.2017    source источник
comment
FF50 не поддерживает область итерации. ФФ51 будет.   -  person a better oliver    schedule 16.01.2017
comment
Возможно, лучший дубликат: Разница в интерпретации между Firefox и Node.js   -  person Bergi    schedule 21.01.2017