[TIL] scope란?

Kyeong_Bong·2022년 6월 18일
1

TIL

목록 보기
8/18
post-thumbnail

스코프(Scope)란?

  • 스코프는 변수에 접근할 수 있는 범위를 말한다.
  • 스코프는 크게 전역 스코프와 지역 스코프로 나눌 수 있다.
  • 전역 스코프( global )는 어디에서든 해당 변수에 접근이 가능하다. (전역변수)
  • 지역 스코프( local )는 한정적인 범위에서 해당 변수에 접근이 가능하다. (지역변수)
  • 지역 스코프에는 함수 스코프와 블록 스코프가 있다.
  • 블록은 {} 로 감싸진 곳을 의미한다.

전역 스코프 ( global )

  • 전역 스코프는 블록( {} ) 밖에 선언된 변수를 뜻한다. 이를 전역 변수라고 부른다.
  • 블록 밖에서 선언되었기 때문에 블록 내부를 포함한 어느 곳 이던지 접근이 가능하다.
// 예시
let a = 100;

funtion 전역변수() {
	return a
}

전역변수() // 출력 = 100

다음과 같이 블록 밖에서 선언후 블록 안에서도 접근이 가능하다.
하지만 이점이 단점으로 작용하기도 한다. 아래는 단점의 예시이다.

let a = 100;

funtion 전역변수() {
    a = 200
	console.log(a) // 출력 = 200
}

전역변수() // 출력 = 200

위는 전역변수 a로 100을 넣어놓고 블록안에 지역변수로 let을 까먹고 200을 다시 넣으면 전역변수 a가 200으로 바뀌는 경우다. 위와 같은 경우가 생길수 있다.

지역 스코프 ( local )

  • 지역 스코프는 블록( {} )안에 선언된 변수를 뜻한다.
  • 지역 스코프는 함수 스코프와 블록 스코프로 나뉜다. 두가지 모두 해당 블록 안에 있을때만 접근이 가능한 변수이다. 이를 지역 변수라고 부른다.

함수 스코프

  • 말 그대로 함수 내부에 선언된 변수이다.
  • 함수 내부에서만 접근이 가능하다. ( var, let, const 동일 )
    function 함수스코프() {
     	var a = "변수"    //함수스코프 (지역변수)
    	return a
    }
        console.log(함수스코프());   // a
        console.log(a);  // Uncaught ReferenceError
    위와 같이 함수 내부에선 접근이 가능하지만 함수 밖에서 변수에 접근하면 에러가 출력된다.

블록 스코프

  • 말 그대로 블록{} 안에 선언된 변수이다.
  • 블록 내부에서만 접근이 가능하다.
  • 예외로 var는 외부에서도 접근이 가능하다.
    {
    	const a = 100
    	console.log("안에서", a) // 100
     }
    	console.log("밖에서", a) // error
    위의 예시는 let으로 해도 동일하다.
    {
    	var a = 100
    	console.log("안에서", a) // 100
    }
    	console.log("밖에서", a) // 100
    위와 같이 var는 블록 스코프가 아니기때문에 외부에서도 접근이 가능하다.
profile
Junior Developer🔥

0개의 댓글