2010-03-06 4 views
2

루프를 실행하고 있으며 루프가 변수 이름 끝에 추가 된 카운터 번호와 함께 실행될 때마다 변수를 만들려고합니다. NAME1 님, NAME2 님, NAME3 님이라는 세 변수가 있어야 실행JavaScript의 다른 변수에 변수를 추가하려면 어떻게합니까?

var counter = 1; 
while(counter < 4) { 
    var name+counter = 5; 
    counter++; 
} 

그래서 루프 후 :

여기 내 코드입니다. 루프에서 생성 할 변수의 끝 부분에 카운터 번호를 추가하려면 어떻게합니까?

답변

4

사용


는 브라우저에서 실행중인 가정하고 nameXXX 글로벌 변수 names [0], names [1] 및 names [2]라고하는 변수. 이 시도 0이 1

2

당신은 연관 배열을 사용할 수

var mycount=new Array(); 
var count=1; 
while (count < 4) { 
    mycount[count++]=5; 
} 
2
var counter = 1, 
    obj = {}; 
while (counter < 4) 
    obj['name'+counter++] = 5; 

// obj now looks like this 
obj { 
    name1: 5, 
    name2: 5, 
    name3: 5 
} 

// the values may now be accessed either way 
alert(obj.name1) && alert(obj['name2']); 
2

를 사용하여 배열을 만들 것입니다.

var names = Array(); 
// ... 
names[counter] = 5; 

는 그런 다음 세 가지를 얻을 것이다 : 당신은 배열을 찾고

window["name" + counter] = 5; 
-1

시작하는 전통적인 참고 :

var counter = 1; 

while(counter < 4) { 
    eval('name' + counter + ' = ' + counter); 
    counter++; 
} 

alert(name1); 
0

예제 코드, 그것은, NAME2, NAME3 변수를 NAME1을 생성합니다. 당신이 평가 후면 사용하는 경우

var count=1; 
while (count < 4) 
{ 
eval("var name" + count + "=5;"); 
count++; 
} 

alert (name1) ; 
alert (name2) ; 
alert (name3) ; 
1

는 루프 내부에 그것을 사용하지만, 한 번에 평가를 실행할 수 있습니다 하나의 문자열을 구축하기 위해 루프를 사용하지 마십시오.

var counter= 1, name= 'name', evlstring= 'var '; 
while(counter < 5){ 
    evlstring+= name+counter+'=5,'; 
    ++counter; 
} 
evlstring= evlstring.slice(0, -1); 

// 내가 정말 평가와 함께 그 멋진 새로운 자바 스크립트 엔진을 최적화하는 것이 정말 어려운 악구 의 미래를 신뢰하지 않는 평가

eval(evlstring); 

alert(name3); 

에서 오류가 발생 할 쉼표를 후행, 그리고 저는 프로그래머들이 그것을보고 싶어하거나 적어도 스코프를 잘라내는 것을 얻고 싶습니다. 당신이 전역 변수를 주장하는 경우

당신이 할 수 있습니다 :

var counter= 1, name= 'name'; 
while(counter < 5){ 
    window[name+counter]=5; 
    ++counter; 
} 

alert(name3) 
관련 문제