본문 바로가기

Study Memos/JavaScript Basic

유효 범위 (Section 18)

참고> opentutorials.org/course/743/6495

 

1. 유효 범위 (Scope) : 변수의 수명
- var 을 함수 밖에서 쓰면 전역 변수, 함수 안에서 쓰면 지역 변수
- for문을 함수 밖에서 쓰면 얘도 전역 변수를 선언해버릴 수 있다.
ex) for(var i = 0; i < 5; i++){
    a();

    document.write(i);

}

 

2. Javascript에서 불가피하게 전역변수를 사용해야 한다면..
-> 전역 변수를 단 하나만 쓰고, 더 필요한 전역 변수들은 맨 처음에 만든 그 변수 안에서 선언하자.
ex) MYAPP = {}

MYAPP.calculator = {

    'left' : null,

    'right': null

}

MYAPP.coordinate = {

    'left' : null,

    'right' : null

}

 

MYAPP.calculator.left = 10;

MYAPP.calculator.right = 20;

function sum(){

    return MYAPP.calculator.left + MYAPP.calculator.right;

}

document.write(sum());

 

-> 또는 익명 함수안에 지역 변수로 호출하고 이 익명 함수를 바로 호출하면 전역 변수를 

하나도 선언하지 않을 수 있음.

 

ex)(function(){

var MYAPP = {}

MYAPP.calculator = {

'left' : null,

'right' : null

}

MYAPP.coordinate = {

'left' : null,

'right' : null

}

 

MYAPP.calculator.left = 10;

MYAPP.calculator.right = 20;

function sum(){
return MYAPP.calculator.left + MYAPP.calculator.right;

}

document.write(sum());

}()) 

 

 

3. 정적 유효범위
함수 실행 시 함수 내에서 변수를 참조할 때에는 사용될 때의 유효 범위가 아니라 정의될 때의 유효 범위를 적용한다.
ex)
var i = 5;
 
function a(){
    var i = 10;
    b();
}
 
function b(){

    document.write(i);

}

 

a();

 

위의 코드에서 b() 함수 내의 i는 자신이 정의될 때의 전역 변수인 '5의 값을 가진 i'를 참조한다.