2011-07-25 10 views
2

다음 예제에서는 for..in 루프를 통해 반복 할 때마다 새로운 변수 'y'가 생성됩니까? 또는 변수 선언이 함수의 맨 위로 올라가고 각 반복마다 다시 사용됩니까?JavaScript 함수 수준 범위 지정

function example() { 
    var x; 
    for(x in obj) { 
     var y = obj[x]; 
    } 
} 

덕분에

답변

3

은 for 루프는 범위에 영향을주지 않기 때문에, 빠진 것.

+0

나는 생각했다. 단지 확실하게하고 싶었다. 감사. – Steve

0

y는 대체되는 동일한 변수입니다.

var obj = { 
    name: "Dan", 
    surname: "Tao" 
}; 

var x; 
for (x in obj) { 
    var y = obj[x]; 
} 
alert(y); 

경고 상자가 yfor 루프의 범위를 외부에 액세스 할 수 있는지 나타내는 텍스트 Tao 나타납니다 : 새가 당신이 test this for yourself을 할 수

function example() { 
    var x; 
    var y= new Array; 
    for(x in obj) { 
     y[x] = obj[x]; 
    } 
} 
+0

나는 그것이 옳지 않다. 루프를 두 개의 문장 :'var y'와'y [x] = obj [x]'로 나눈 다음 두 문장 사이에'y'의 값을 읽으면'y'에 여전히 배열 즉, 새로운 정의되지 않은 변수는 아닙니다. – gilly3

+0

y는 여전히 obj 배열 항목을 포함하기로되어 있지만 y는 obj 배열의 각 항목을 색인 할 수 있습니다. 나는 그가 obj 배열의 마지막 항목 만 보유 할 것인지 묻고 있었다. y [x] y를 사용하면 obj와 같은 배열을 포함하게됩니다. –

+0

그러면 왜'var' 키워드를 사용합니까? 새 배열로 y를 정의하려면 – gilly3

0

사용하는 것이 확인합니다.