Использование массива вместо цепочки блоков if / else или гигантского оператора switch будет быстрее, более гибким и менее подверженным ошибкам.Кроме того, вам не придется беспокоиться, если dir
- это число или строка.Вместо:
if(dir==0){img+='N.png';}
else if(dir==1){img+='NE.png';}
else if(dir==2){img+='E.png';}
else if(dir==3){img+='SE.png';}
else if(dir==4){img+='S.png';}
else if(dir==5){img+='SO.png';}
else if(dir==6){img+='O.png';}
else if(dir==7){img+='NO.png';}
вы можете сохранить имена файлов в массиве:
var images = [
'N.png', 'NE.png', 'E.png', 'SE.png', 'S.png', 'SO.png', 'O.png', 'NO.png'
];
или, возможно, более читабельно:
var images = "N.png NE.png E.png SE.png S.png SO.png O.png NO.png".split(' ');
, а затем использовать просто:
img = images[dir];
Полная реализация getDirections с использованием массива будет выглядеть следующим образом:
var images = "N.png NE.png E.png SE.png S.png SO.png O.png NO.png".split(' ');
function getDirections(dir) {
var img = images[dir];
if (!img) {
alert("something");
}
return img;
}
Работает ли он для вас?
Если images
используется только в этомфункция, тогда вы можете сохранить его как свойство функции, чтобы избежать загрязнения пространства имен, например:
function getDirections(dir) {
var img = getDirections.images[dir];
if (!img) {
alert("something");
}
return img;
}
getDirections.images =
"N.png NE.png E.png SE.png S.png SO.png O.png NO.png".split(' ');
или использовать замыкание.