스코프(Scope)

훈이·2022년 10월 24일
0
post-custom-banner

스코프(Scope)란???

스코프의 정의는 식별자 접근 규칙에 따른 유효 범위라고 할수 있으며 여기서 범위는 { }(중괄호/블록) 또는 함수라고 할 수 있다. 그리고 중괄호 범위를 블록 스코프(Block Scope), 함수 범위를 함수 스코프(Function Scope)라고 한다.

스코프(Scope)의 구분

  • 전역 스코프(Global Scope) : 코드 어디에서든지 참조가 가능하다.
  • 지역 스코프(Local Scope / Function-level Scope) : 함수 코드 블록이 만든 스코프이며 함수 자신과 하위 함수에서만 참조가 가능하다.

변수 관점에서 스코프를 구분할 수도 있다.

  • 전역 변수(Global variable) : 전역에서 선언된 변수이기 때문에 어디에서든 참조할 수 있다.
  • 지역 변수(Local variable) : 지역(함수)내에서 선언된 변수이며 그 지역과 그 지역의 내부에서만 참조할 수 있다.

블록 스코프(Block Scope)

  • 블록 스코프는 { }(블록) 내부에서 선언된 변수는 해당 블록에서만 접근 가능하며 let, const가 블록 스코프를 따른다.
{
    const dog = "멍멍";
    console.log(dog); // "멍멍"
}
console.log(dog); // ReferenceError: dog is not defined

{
    let cat = "야옹";
    console.log(cat); // "야옹"
}
console.log(cat); // ReferenceError: cat is not defined

위의 코드를 보면 const와 let은 블록 스코프를 따르므로 { } 안에서는 접근이 가능하여 각각 "멍멍","야옹"을 출력하지만 { } 밖에서는 정의되지 않았다고 오류를 낸다.

{
    var dog = "멍멍";
    console.log(dog); // "멍멍"
}
console.log(dog); // "멍멍"

반면에 var는 블록 스코프를 따르지 않기 때문에 { } 밖에서도 오류가 나지않고 값이 출력된다.

함수 스코프(Fuction Scope)

  • 함수가 선언되면 스코프가 발생한다.
  • 함수에서 선언한 변수는 해당 함수 내에서만 접근이 가능하다.
function animal() {
    var cat = "야옹";
}
console.log(cat); // ReferenceError: cat is not defined

위의 코드에서 var는 블록 스코프를 따르지는 않지만 함수 스코프를 따르기 때문에 함수 내에서 정의된 cat에 접근하려고 하면 오류를 내는 것을 볼 수 있다.

참고한 사이트 :
https://hanamon.kr/javascript-%EC%8A%A4%EC%BD%94%ED%94%84%EC%99%80-%EB%B3%80%EC%88%98%EC%84%A0%EC%96%B8%ED%82%A4%EC%9B%8C%EB%93%9C-%EC%B0%A8%EC%9D%B4%EC%A0%90/
https://poiemaweb.com/js-scope
https://mong-blog.tistory.com/entry/%EB%B8%94%EB%A1%9D-%EC%8A%A4%EC%BD%94%ED%94%84-%ED%95%A8%EC%88%98-%EC%8A%A4%EC%BD%94%ED%94%84%EC%9D%98-%EC%B0%A8%EC%9D%B4-javascript?category=967416

profile
백엔드 개발자가 되자!
post-custom-banner

0개의 댓글