``` js function logTheLengthOfTheArrayForEachElementInTheArrayAsync() { var messages = [0, 1, 2]; for (var i = 0; i < messages.length; i++) { function logMessage() { console.log(i) } setTimeout(logMessage) } } logTheLengthOfTheArrayForEachElementInTheArrayAsync(); ``` prints: ``` 3 3 3 ``` but: ``` js function logTheLengthOfTheArrayForEachElementInTheArrayAsync() { const messages = [0, 1, 2]; for (let i = 0; i < messages.length; i++) { function logMessage() { console.log(i) } setTimeout(logMessage) } } logTheLengthOfTheArrayForEachElementInTheArrayAsync(); ``` prints: 0 1 2