2011-02-09 2 views

답변

15

하기는 함수의 범위 내 전분기 대비 선언했습니다. 일단 해당 함수가 종료되면 qq는 더 이상 존재하지 않습니다.

qq에 대한 경고를 받으려면 함수 밖에서 선언해야합니다. 그것에 할당 된 마지막 값만 포함된다는 것을 명심하십시오.

var qq; 

$('li').each(function(index) { 
    qq=$(this).text(); 
    alert(index + ': ' + qq); 
    }); 

alert(qq); // Will alert 'bar' 
+0

기능을 수행하려면 어떻게해야합니까? PHP에서는 함수에서 전역 변수를 사용할 수 있지만 JS에서는 알 수 없습니다. – borayeris

+1

@borayeris이 답변의 코드는 변수를 "전역 화"하여 작동시킵니다. :) – bzlm

+1

@borayeris : 당신은'var'을 건너 뛸 수 있습니다. 이것은 명시 적으로'qq'를 전역 ('window') 객체로 밀어 넣을 것입니다. 어쨌든, 이런 일을 전역 네임 스페이스에 집어 넣는 것은 꽤 나쁜 일입니다. 그러지 마세요. – jAndy

3

왜 브랜든의 대답이 올바른지 설명하고 있습니다. 당신을 다시 지정하는

var qq; 

$('li').each(function(index) { 
    qq = $(this).text(); 

    alert(index + ': ' + qq); 
    }); 


alert(qq); 

이 있습니다 전분기 대비 글로벌 범위 변수 : 대신에, 당신은 당신이 각()에 대한 호출 후가 액세스 할 수 있도록 만들 수있는 방법을 알고 싶다면, 당신은 아마 이런 식으로 뭔가를 원하는 루프를 통과 할 때마다의 값. 루프가 끝나면 변수는 마지막 값 (예 : bar)을 유지합니다.

0

그것은 다음과 같이 다시 작성해야합니다

<script> 
var qq; 
$('li').each(function(index) { 
qq=$(this).text(); 
alert(index + ': ' + qq); 
}); 
alert(qq); 

;

qq에는 li을 반복 할 때마다 다시 할당하기 때문에 마지막 값만 포함됩니다.

익명 함수 내에서 qq 변수를 선언했기 때문에 작동하지 않아 외부에 존재하지 않았습니다.

관련 문제