프론트엔드 개발자가 되기위한 여정 -44

이정우·2022년 10월 24일
0

frontend-bootcamp

목록 보기
47/60

밸~하!

밸로그여러분 안녕하세요!

오늘은 scope에 대해서 알아볼수있도록 하겠습니다 !

먼저 scope란 무엇일까요??

scope란?

scope의 정의에 대해서 알아보겠습니다!

scope는 참조 대상 식별자(identifier, 변수, 함수의 이름과 같이 어떤 대상을 다른 대상과 구분하여 식별할 수 있는 유일한 이름)를 찾아내기 위한 규칙입니다!
보기만 해서는 무슨소리인지 이해가 어렵죠?

한번 예제를 통해서 알아볼까요??

let x= "global"

function Scope(){
	let x= "localScope"
    console.log(x)
}

Scope()
console.log(x)

과연 위의 결과어떻게 나올까요??

변수x가 중첩되서 중복이 선언이 되었는데

처음 선언된 global은 어디서든 참조를 할수있습니다
하지만 Scope안에 있는 x의 경우에는 scope안에서만 참고를 할수있습니다

이게 바로 스코프 라는것입니다!

또한 자바스크립트에서 스코프는 크게 두가지로 나눌수가 있는데요 !

1.전역 스코프(global scope)

2.지역 스코프(local scope or Function-level scope)

전역스코프는
같은 파일이라면 코드의 어느부분에서도 참조를 할 수있는것입니다!

그러나 지역스코프는
함수의 코드블록이 만든 스코프로 함수 자신과 하위함수에서만 참조할수가 있습니다!

그럼 이번엔 변수의 관점에서 봐볼까요??

전역변수

전역에서 선언된 변수이며 어디에든 참조할수가 있습니다

지역변수

지역(함수)내에서 선언된 변수이며 그 지역과 그 지역의 하부지역에서만 참조할수가 있습니다

이것을 보았을때 변수라는것은
선언위치에 따라 스코프를 가지게 됩니다!
즉 전역에서 선언된 변수는 전역스코프를 갖는 전역변수이고, 지역에서 선언된 변수는 지역스코프를 갖는 지역변수가 됩니다!

전역스코프를 갖는 전역변수는 전역곧 어디에서든 참조를 할수가있습니다!

그럼 이번에는 자바스크립트에서의 스코프의 특징에대해서 알아보겠습니다!

특이하게도 자바스크립트의 스코프는 타 언어와는 다른 특징이 있습니다!

어떤 특징일까요??

대부분의 언어는 블록레벨스코프를 따릅니다
블록레벨 스코프란?
코드 블록 즉 {}내부에서 유효한 스코프를 의미합니다
여기서 유효란 접근할수있다는 뜻인데요

하지만 자바스크립트는 함수레벨 스코프를 따르게 됩니다!
함수레벨 스코프를 따릅니다!
함수레벨 스코프는 함수코드 블록내에서 선언된변수는 오직 함수 코드 블록내부에서 만 사용할수있고 함수외부에서는 사용할수 없다는것입니다!

자 오늘은 이렇게 스코프에대해서 간단히 알아보았는데요
스코프를 자세히 알면 에러가 발생했을때 어떤 부분에서 에러가발생했는지 또는 참조를 못해왔는지를 알수있기 떄문에 굉장히 유용한 지식입니다!

자 그럼 오늘도 지식한개 적립완료!

다들 밸~바!

profile
주니어 프론트엔드 개발자

0개의 댓글