このコードを実行してみたら、不思議な結果がでました

function printFive() {
    for (var i = 0; i < 5; i++) {
        setTimeout(function () {
            console.log(i);
        }, i * 1000);
    }
}

printFive();

こうすれば、

0
1
2
3
4

がゆっくり出力されると思うと、実際は

5
5
5
5
5

がでました。

jsfiddle

どうして0から4までループしているのに、5ばかりが出てくるんですか。どうすれば思い通りになりますか。