function buildList(list) { var result = []; for (var i = 0; i < list.length; i++) { var item = 'item' + i; var f = function() { var object = item; var j = i; return function() { console.log(object + ' ' + list[j]) }; } result.push(f()); } return result; } function testList() { var fnlist = buildList([1, 2, 3]); // Using j only to help prevent confusion -- could use i. for (var j = 0; j < fnlist.length; j++) { fnlist[j](); } } testList();