a の宣言位置がダメ
とりあえず宣言はこう変える

var obj = {};
var arr = ['left', 'right', 'width'];

後はお好きに

for (let a of arr) {
obj[a + '_test'] = () => console.log(a);
}

for (var i = 0; i <arr.length; i++) {
obj[arr[i] + '_test'] = function() { console.log(arr[i]); };
}

for(var i = 0; i <arr.length; i++) {
(function() {
var a = arr[i]
obj[ a + '_test'] = function() { console.log(a); };
})();
}

var は難しいから使うな let 使え
IE は捨てろ