on() function in for loop

on() function in for loop

 
  1. <button> 0 </button>
  2. <button> 1 </button>
  3. <button> 2 </button>
  4. <button> 3 </button>
  5. <button> 4 </button>
  6. <div id="log"></div>
  7. <script>
  8. var logDiv = $( "#log" );
  9. for ( var i = 0; i < 5; i++ ) {
  10. $( "button" ).eq( i ).on( "click", { value: i }, function( event ) {
  11. var msgs = [
  12. "button = " + $( this ).index(),
  13. "event.data.value = " + event.data.value,
  14. "i = " + i
  15. ];
  16. logDiv.append( msgs.join( ", " ) + "<br>" );
  17. });
  18. }
  19. </script>

When buttons are pressed:
button = 0, event.data.value = 0, i = 5
button = 1, event.data.value = 1, i = 5
button = 2, event.data.value = 2, i = 5
button = 3, event.data.value = 3, i = 5
button = 4, event.data.value = 4, i = 5

My question is why i=5 when each button is pressed?