レキシカルクロージャといって、クロージャにキャプチャされるのは変数の値じゃなくて変数そのもの。
foreachの繰り返し変数はループ全体で使い回されるから、
すべてのクロージャが一つのitemを共有することになる。
a b cと出力させるには、ループの中でvar item2 = item;と宣言しなおして
取り込む変数のスコープを一回のループだけに限定してやればいい。