2011-09-30 1 views
0

자바 스크립트에서 정적 변수에 대한 질문이 있습니다. 그들은 스크립트의 범위 내에서만 지속됩니까? 내 말은 컨트롤이 스크립트를 떠나 HTML 코드로 돌아 가면 정적 변수가 여전히 존재한다는 것입니다.컨트롤에서 스크립트를 벗어나면 JavaScript 정적 변수가 유지됩니까?

+0

예 그들은 아직 거기에 있습니다. 페이지를 새로 고침하면 전역 값이 다시로드됩니다. – hvgotcodes

+0

Javascript에서 "정적"변수를 어떻게 선언합니까? 정적 인 변수는 모든 스크립트 인스턴스에서 동일하게 유지됩니다. 예를 들어 정적 인 시간당 요율을 45 달러/시간으로 설정하면 시작시와 모든 메소드 호출시 45 달러가됩니다. 정적 변수는 프로그램 실행 전에 할당됩니다. 따라서 정적 변수는 프로그램 실행의 각 인스턴스마다 어떻게 동일한 값을 가지게됩니다. – Furbeenator

+0

나는 그들을 객체 내의 필드로 선언하고있다. 그래서 코드를 작성하기 전에 프로그램 시작시 선언해야합니까? 함수 안에서 선언 할 수는 없습니까? –

답변

0

정적 변수 대신 전역 변수라고 가정합니다. 전역 변수는 전역 문서 범위에서 선언됩니다. 모든 메소드 (함수)에서 액세스 할 수 있으며 함수의 코드 블록 내에서 값을 수정하면 전역 변수를 수정하므로 값이 지속됩니다. 예를 들어

을 :

<script type="text/javascript"> 
    global_var = 0; // declared globally 
    function global_inc(){ 
     global_var += 1; // global var incremented by 1 
    } 

    function local_inc(){ 
     local_var = global_var; // declared locally, and scope ends at function end. 
     local_var += 1; // local var incremented by 1 
     alert('global: ' + global_var); 
     alert('local: ' + local_var); 
    } 

    function alert_global(){ 
     alert('global: ' + global_var); 
    } 
</script> 

<script type="text/javascript"> 
    alert_global(); // alert global (0) 
    global_inc(); // increment global to 1 
    local_inc(); // set local to global (1) and increment local to (2), alert both 
    alert_global(); // alert global (1) 
</script> 

당신은 얻을 것이다 :의
경고 "글로벌 : 0"의 alert_global()
경고에서 "글로벌 : 1"로컬 "의 local_inc에서()
경고 : 2 "from local_inc()
alert_global()의"global : 1 "경고 :

관련 문제