scope와 변수 선언

임성준·2022년 5월 11일
0
post-thumbnail

1. 스코프(Scope)

스코프의 정의는 “식별자 접근 규칙에 따른 유효 범위”이다.

  • 식별자(변수, 함수, 클래스)에 접근할 수 있는 범위가 존재한다.
  • 범위는 중괄호(블록) 또는 함수에 의해 나눠진다.
    그 범위를 스코프라고 부르며, 각각을 Block Scope와 Function Scope라고 부른다.

개인 정리 : 접근 범위

💎   안쪽 스코프에서 바깥쪽 스코프로 접근할 수 있지만 반대는 불가능하다.

스코프 구분

  • 가장 바깥쪽의 스코프를 전역 스코프(Global Scope)라고 부른다.
  • 전역이 아닌 다른 스코프는 전부 지역 스코프(Local Scope)이다.

스코프 종류

  • 스코프의 두가지 종류 블록 스코프와 함수 스코프가 있다.
  • 화살표 함수는 함수 스코프가 아니다.

    * 주의 : 화살표 함수는 블록 스코프로 취급

2. 스코프와 var, let, const 키워드

▶︎   const 키워드

  • 유효 범위 : 블록 스코프 / 함수 스코프 모두 해당
  • 값 재할당 : 불가능
  • 재선언 : 불가능
for(let i=0; i<10; i++) {
  console.log(i);
  const a = "a";
}
// 전역스코프에서 선언한 변수 a 는 존재하지 않음으로 아래에서 ReferenceErrer을 일으킨다.
console.log(a); // ReferenceErrer

▶︎   let 키워드

  • 유효 범위 : 블록 스코프 / 함수 스코프 모두 해당
  • 값 재할당 : 가능
  • 재선언 : 불가능
for(let i=0; i<10; i++) {
  console.log(i);
}
// 전역스코프에서 선언한 변수 i 는 존재하지 않음으로 아래에서 ReferenceErrer을 일으킨다.
console.log(i); // ReferenceErrer

▶︎   var 키워드

  • 유효 범위 : 함수 스코프
  • 값 재할당 : 가능
  • 재선언 : 가능
for(var i=0; i<10; i++) {
  console.log(i);
}
// var 키워드로 선언한 변수 i 는 지역 스코프에서 선언되었지만 모든 스코프에서 접근 가능하다.
console.log(i); // 9

결론

블록 단위로 스코프를 구분했을 때, 훨씬 더 예측 가능한 코드를 작성할 수 있으므로 letconst 키워드의 사용이 권장된다.

참조

profile
오늘도 공부 📖🌙

0개의 댓글