JavaScript/Basic

스코프(Scope)

yunajoe 2022. 12. 3. 17:21

- var, let, const 키워드로 선언한 변수의 스코프는 다 다르게 동작한다

 

// Scope  
let x = 3;  // 글로벌 변수, 전역 변수(Global Variable)

function myFunction(){
  let x = 5; // 로컬 변수, 지역 변수(Local Variable)
  console.log(x); 
}  
myFunction();  // 5
console.log(x);  // 3
var var1 = 1; // 코드의 가장 바깥 영역에서 선언한 변수 
if(true){
    var var2 = 2;  // 코드 블록 내에서 선언한 변수 
    if(true){
        var var3 = 3;  // 중첩된 코드 블록내에서 선언한 변수 
    }
}

function foo(){
    var var4 = 4; // 함수 내에서 선언한 변수 
    function bar(){
        var var5 = 5; // 중첩된 함수 내에서 선언한변수 
    }
}


console.log(var1); // 1
console.log(var2); // 2
console.log(var3); // 3
console.log(var4); // "ReferenceError: var4 is not defined 
console.log(var5); // "ReferenceError: var5 is not defined

 

스코프의 종류

 구분  설명 스코프 변수
전역 코드의 가장 바깥 영역 전역 스코프  전역 변수
지역 함수 몸체 내부  지역 스코프  지역 벼수

전역과 전역 스코프 

- 코드의 가장 바깥 영역

- 전역에 변수를 선언하면은 전역변수가 되며 전역변수는 어디서든지 참조가능

 

지역과 지역 스코프

- 함수 몸체 내부를 말한다. 

- 지역에 변수를 선언하면은 지역변수가 되며, 지역 변수는 지역 스코프와 하위 지역 스코프에서 유효 

 

 

 

블록레벨 스코프 

- 함수 뿐만 아니라 모든 코드 블록(If, for, while, try/catch 등0 이 지역 스코프를 만든다 

 

함수레벨 스코프 

- 오로지 함수의 코드 블록만을 지역 스코프로 만든다