2015-01-17 2 views
0
<html> 
<body> 
<script type= "text/javascript"> 

var i=10; 
function f(){ 
    alert(i); 
    if(!i){ 
    var i= 20; 
    } 
    alert(i); 
} 
f(); 
</script> 
</body> 
</html> 

이것은 내 HTML 파일입니다. 내가받는 출력은 첫 번째 경고에 대해서는 정의되지 않았고 두 번째 경고에 대해서는 정의되지 않았습니다. 왜 이렇게됩니까? 여기서 무슨 일이 일어나고있는거야?자바 스크립트에서 변수 i의 범위

+0

을,'하지만, 이전에 내가 그렇게 정의되지 않은 얻을 .... –

답변

0

나는 그것이 내가 끌어 올려 졌기 때문에 나는 그것을 믿는다. 그러나 i의 할당은 그렇지 않다. 따라서 경고 할 때 아직 값이 할당되지 않은 로컬 범위의 i를 참조하고 있습니다. 당신은 전용 변수`var에 나는 = 20을 만들

var i; 
alert(i); 
if(!i){ 
    i = 20; 
} 
+0

을이 왜 자바 스크립트 경고하고 있습니다 :

그것은 다음과 같은 작업 끝 javascript에는 블록 범위가 없으므로 맨 위에 함수 변수를 선언해야합니다. – beartech1

+0

오, 그래서 함수의 맨 위로 다시 선언되고 있습니까? –

+0

코드가 다음과 같이 작동합니다. (편집 된 답변 참조) – beartech1

관련 문제