2014-03-28 8 views
1

나는 자바 스크립트에 초보자이다. 나는 보통 자바로 프로그래밍한다. 다음 코드 스 니펫에 혼란스러워합니다. 내가 실행하면JavaScript의 전역 변수는 어떻게 작동합니까?

<script> 
x = "foo"; 

function bar(p){ 
    if (p){ 
    document.writeln("x = " + x); 
    } else { 
    var x = "baz"; 
    } 
} 

bar("baz"); 

</script> 

는 위의 코드는 x가이 foo는 바로 인쇄해야 전역 변수이기 때문에 왜, 정의되지 않은 인쇄 않습니다 자사의 인쇄

x = undefined 

을 냈다? 아무도 설명 할 수 있을까요? X 이후

+0

입니다 시도' – TheMohanAhuja

답변

1

는 foo는을 인쇄해야하는 글로벌 변수를 잘

가 더 함수의 최대 var x = "baz"; 선언에 의해 그림자가되지 않은 경우 그것은 것; 때문에이 기능을 실행합니다 게양에 당신은 당신이 단순히 x = "baz"; 대신 var x = "baz"; 쓸 수, 코드가 당신이 원하는 것을 할 수 있도록하기 위해

function bar(p){ 
    var x; // = undefined 

    if (p){ 
    document.writeln("x = " + x); 
    } else { 
    x = "baz"; 
    } 
} 

을 쓴 것처럼. `그냥`X = "바즈을";

0

이 출력이 VAR X = "바즈"`에서 VAR에의 x를 추가하지 x = foo

var x="foo"; 
function bar(p){ 

    if (p){ 
    document.writeln("x = " + x); 
    } else { 
    x = "baz"; 
    } 
} 

bar("baz"); 
관련 문제