[개발일기] (230806) JS 공부 - 함수 끝, 스코프

오늘·2023년 8월 5일
0

[개발일기]

목록 보기
183/199

TIL

함수

오랜 기간 하던 함수 장을 끝냈다.
마지막 부분에는 순수 함수 등등의 내용이 있었는데, 이 부분은 예전에 Kotlin을 공부하면서 많이 봤던 내용이라 익숙했다.

스코프

그 다음 장은 스코프(scope)에 대한 내용이었다.

가장 기억에 남는 부분은 자바스크립트의 var 변수는 함수 레벨 스코프를 갖는다는 것이었다.
이 부분을 보고 블록 레벨 스코프(block level scope), 함수 레벨 스코프(function level scope)가 무엇인지 처음으로 정확하게 알게 되었다.

공부를 하거나 일을 할 때 간혹 보던 말이었는데, 그 뜻을 정확하게 알게 된 것 같아서 좋았다.

  • 함수 레벨 스코프는 변수가 if 등의 코드 블록 내부에 선언되어도, 함수 내부가 아니면 전역 변수로 취급
  • 블록 레벨 스코프는 변수가 코드 블록 내부에 있으면, 해당 블록 내부에서만 유효

한 가지 더 기억할 만한 부분은 렉시컬 스코프(lexical scope, 또는 정적 스코프(static scope)), 동적 스코프(dynamic scope)이다.

  • 렉시컬 스코프(lexical scope) 또는 정적 스코프(static scope)는 함수가 어디서 선언되었느냐에 따라 상위 스코프가 정해지는 것
  • 동적 스코프(dynamic scope)는 함수가 어디서 호출되었느냐에 따라 상위 스코프가 정해지는 것

대부분의 프로그래밍 언어처럼 자바스크립트 역시 렉시컬 스코프를 채택하고 있어서 함수가 선언된 위치에 따라 상위 스코프가 달라지고, 그에 따라서 함수 내부에서 변수나 함수의 결과도 달라진다는 걸 알게 되었다.

이건 몰랐던 부분이었는데, 알고 나니 신기했다.

profile
Junior Mobile 개발자

0개의 댓글