[질문]eval 을 활용한 다이나믹 var명명

var k = 'value';
var i = 0;
for(i = 1; i < 5; i++) {
    eval('var ' + k + i + '= ' + i + ';');
}
document.write("value1=" + value1);
document.write("<br>value2=" + value2);
document.write("<br>value3=" + value3);
document.write("<br>value4=" + value4);

변수값을 자동으로 생성하는 코딩을 하고싶은데요.
검색하던중에 절대 eval을 쓰지마라.
"위험하고 안정성이 떨어지고 비효율적이다 "라는 글과 function 으로 대체 가능하다라는 글을 봤는데
왜 그렇고 어떻게 대체가능한지 고수님들의 조언을 구합니다.

저는 워낙 '코린이’라… 아는게 전혀 없이 질문드리는 점 양해부탁드립니다.

전역변수는 전역객체 window의 속성으로 취급되니다.
또, 객체의 속성을 만들때 속성의 키는 계산된 값을 사용할 수 있습니다.

for(i = 1; i < 5; i++) {
    window['value' + i] = i;
}

하지만 더 좋은 방법은, 애초에 전역변수를 만들지 않는 것입니다.
임의로 객체하나를 만들고, 그 객체에 값을 담는거죠

var myValues = {};
for (i =1; i < 5; i++) {
  myValues['value' + i] = i;
}
document.write("myValues.value1=" + myValues.value1);
document.write("<br>myValues.value2=" + myValues.value2);
document.write("<br>myValues.value3=" + myValues.value3);
document.write("<br>myValues.value4=" + myValues.value4);

mdn 에 eval을 쓰지 말아야 할 이유가 잘 써있습니다.

친절한 답변 감사합니다 ^^