Это не проблема это фича языка
ну может ... но для новичков это выглядит, как ловушка))
мне кажется большинство бы написало именно (если бы еще не ввели let и const):
for (var x = 0; x < 3; x++) {
setTimeout(function () {
console.log(x)
}, 100 * x)
}
а не:
function log(x) {
setTimeout(function () {
console.log(x)
}, 100 * x)
}
for (var x = 0; x < 3; x++) {
log(x)
}
и недоумевали бы: да что не так??))