var fruits = ["apple", "orange", "banana"]; という配列があるとき、 for (var i = 0; i < fruits.length; i++) { window.setTimeout(function() { alert(fruits[i]); }, i * 1000); } こうすると1秒おきに「undefined」が3回表示されてしまう。コールバック関数が呼び出されたときにはすでにローカル変数 i は破棄されている i の値が3になっているためである。 以下のようにコールバック関数を文字列にしておけば、1秒おきに「apple」「orange」「banana」が表示される。 for (var i = 0; i < fruits.length; i++) { window.setTimeout("alert('" + fruits[i] +