4 ms·
i likely ran into the same or a related issue. i dont know much about javascript though. for(var i = 0; i < elevators.length; i++) { elevat
by mercora 5y ago
i likely ran into the same or a related issue. i dont know much about javascript though.
for(var i = 0; i < elevators.length; i++) {
elevators[i].on("idle", function() {
for(var j = 0; j < floors.length; j++) {
elevators[i].goToFloor(j);
}
})
}
it only works for "i < 1" and then only the second elevator moves... its kinda sad as i immediately enjoyed playing ...
- garaetjjte 5y agoI think this was discussed there: https://news.ycombinator.com/item?id=8933979 https://news.ycombinator.com/item?id=8933979
- mercora 5y agothis did indeed help understanding and fixing the issue.
- davnicwil 5y agoJust in case this is interesting, a potentially more elegant way to solve this with modern JS is to use 'for(let i' instead of 'for(var i'. The reason is that 'let' gives 'i' 'block scope', meaning that each iteration of the loop block gets its own scope so that 'i' isn't overwritten each time, and each function you declare captures the value of 'i' at the time it was declared. In other words - the way you originally expected 'var' to behave is how 'let' behaves!