본문 바로가기

자바스크립트(jquery)

javascript 동적 변수명 선언

반응형

동적으로 변수명을 생성할 일이 있었다.

var key = "func";
for(var i=0; i<arguments.length; i++)
{
  eval("let "+key+""+i+"= "+arguments[i]);
}

javascript 에서 변수선언시

let test + i

이런식으로 동적생성이 불가능하니 예시처럼 eval 함수를 사용하였다.

 

eval(string) 함수는 string으로 표현된 문자열을 javascript 코드로 실행할 수 있도록 해주는 함수다.

물론 사용을 지양 하는 것이 좋다. 저렇게 하면 당연히 코드 해석하기도 어려우니... 그런데 딱히 생각나지 않아서 사용하긴했다.

 

위 코드를 해석하자면 function 에 파라미터 개수를 동적으로 받아와서 해당 파라미터들 개수만큼 func0, func1 ... 이런식으로 변수를 생성하도록 만든코드이다.

arguments 가 

eval 속 string 은 let func0 = argument[0]; 이런식으로 만들어지며 변수가 생성되도록 하였다.

 

근데 왜 저렇게 했었는지는 기억이 나지않는다...

이제 와서 다르게 코드를 짜보면 이렇게 짤 것이다.

let testObj = {};

for (let i = 1; i <= 10; i++) {
    let objName = 'name' + i;
    let objValue = i;
    // 동적으로 변수를 객체에 할당
    testObj[objName] = objValue;
}

//출력
for (let key in testObj){
    console.log(testObj[key]);
}

객체를 사용하여 만들었다.

 

배열을 사용한 방법도 있다

let testArr = [];

for (let i = 1; i <= 10; i++) {
    // 배열에 숫자를 추가
    testArr.push(i);
}

for (let i = 0; i < testArr.length; i++) {
    console.log(testArr[i]);
}

 

옛날에 네이버 블로그에 썼던 글을 정리하면서 옮기는 중인데 3년전의 나는 왜 저랬을지 모르겠다.

'자바스크립트(jquery)' 카테고리의 다른 글

javascript var? let? const?  (0) 2024.03.21
javascript로 만든 jquery empty  (0) 2024.03.21
window/document , on/ready  (0) 2024.03.21
javascript sleep 함수  (0) 2024.03.21
Jquery 엑셀다운로드  (0) 2024.03.21