While practicing JavaScript, I came across with one doubt I am printing variable i value using var and using let keyword and both the time getting different result but unable to understand why I need some explanation for this??
Declaring i as let:
<script>
(function timer() {
for (let i = 0; i <= 5; i++) {
setTimeout(
function clog() {
console.log(i);
}, i * 1000
);
}
})();
</script>
The output is a count from 0 to 5: 
Declaring i as var, on the other hand:
<script>
(function timer() {
for (var i = 0; i <= 5; i++) {
setTimeout(
function clog() {
console.log(i);
}, i * 1000
);
}
})();
</script>
The output is 6 times a 6: 