스코프 (scope)

beablessing·2021년 4월 26일
0

JS

목록 보기
4/11

스코프

'변수의 유효범위' 라는 의미로 사용됨.
변수에 접근할 수 있는 범위.
중괄호(블록) 안쪽에 변수가 선언되었는가,
바깥쪽에 선언되었는가가 중요.

블럭스코프: 중괄호를 기준으로 범위가 구분됨(화살표함수는 블록스코프)
함수스코프: function키워드가 등장하는 함수 선언식 및 함수 표현식으로 구분됨

스코프 원칙1.

let username = 'kim';
if (username) {
  let message = `Hello, ${username}!`;
  console.log(message); // ?
}
console.log(message); // ?

바깥스코프에서 선언한 변수를 사용할경우, 정상 출력
안쪽스코프에서 선언된 변수를 바깥에서 사용할 경우, reference error

스코프 원칙2.

스코프는 충첩이 가능함.

만약, a스퀘어 안쪽에 b스퀘어 존재하는 방식으로 4개의 중첩된 스퀘어가 있을 경우,
let a : global scope (전역) // a 사용가능
let b : local scope (지역) // a, b 사용가능
let c : local scope (지역) //a, b, c 사용가능
let d : local scope (지역) //a,b,c,d사용가능

전역스코프와 지역스코프는 반대말임...

스코프 원칙3.

지역변수는 전역변수보다 더 높은 우선순위를 가집니다

스코프의 let, const, var

  1. var (권장하지 않음)
    : 블록스코프를 무시하고, 함수 스코프만 따름.
    즉, 블럭범위를 벗어나도 안쪽스코프에서 선언된 변수를 사용할 수 있음
    재할당 가능/ 재선언 가능

  2. let
    : 블록스코프와 함수 스코프 모두 따름
    재할당 가능/ 재선언 불가

  3. const
    : 블록스코프와 함수스코프 모두 따름
    재할당 불가능/ 재선언 불가능

window 객체 (브라우저 only)

  • 브라우저에는 window라는 객체가 존재
  • 브라우저 창을 대표하는 객체
  • 브라우저 창과 관련없는 전역항목도 담고있음.
    (var로 선언된 전역변수와 전역함수는 window객체에 속함)

기타

  • 전역변수: 어디서든 접근 가능한 변수 .
    현리한 대신, 다른함수 혹은 로직에 의해 의도치 않은 side effect발생
profile
프론트엔드 개발자

0개의 댓글