스코프

H·2023년 10월 19일
0

경남 ABC Frontend

목록 보기
10/14

스코프

범위가 중괄호(블록) 또는 함수에 의해 나누어지고, 그 범위를 스코프라고 부른다.
규칙
1. 안쪽 스코프에서 바깥쪽 스코프로는 접근할 수 있지만 반대는 불가능
2. 스코프는 중첩이 가능하다.
3. 가장 바깥쪽의 스코프는 전역 스코프라고 부른다. 전역이 아닌 다른 스코프는 전부 지역 스코프
4. 지역 변수는 전역 변수보다 더 높은 우선순위를 가진다.

스코프의 두 가지 종류

  1. 블록 스코프 - 중괄호를 기준으로 범위가 구분된다.
  2. 함수 스코프

블록 스코프

블록 스코프에서 정의된 변수는 블록 범위를 벗어나는 즉시 접근할 수 없다.
주의할 점 : var 키워드는 블록 스코프를 무시한다. block 범위를 벗어나도 같은 function scope 안에서는 사용이 가능하다. (화살표 함수의 블록 스코프는 무시 x)
블록 단위로 스코프를 구분했을 때, 훨씬 더 예측 가능한 코드를 작성할 수 있으므로 let 키워드의 사용이 권장됨.

함수 스코프

var을 사용하지 않는다 해도, 함수 스코프는 let으로 선언된 변수의 접근 범위를 제한함
var 선언은 함수 스코프의 최상단에 선언된다.

var 키워드 보다 let 키워드가 권장되는 이유

let 키워드는 재선언을 방지

const

값이 변하지 않는 상수를 정의할 때 쓰는 const
let 과 동일하게 블록 스코프를 따른다.
값의 재할당이 불가능 -> 의도하지 않은 값의 변경을 막을 수 있다.

let, var, const 키워드 비교

letconstvar
유효 범위블록 스코프 및 함수 스코프블록 스코프 및 함수 스코프함수 스코프
값 재할당가능불가능가능
재선언불가능불가능가능

let, const, var의 차이점은 무엇보다 유효범위에 있다!

변수 선언할 때 주의할 점

Window 객체

var로 선언된 전역 변수 맟 전역 함수는 window 객체에 속하게 된다.
window 객체 : 브라우저 창을 대표하는 객체, 브라우저 창과 관계없이 전역 항목도 담고 있음
전역 변수에 너무 많은 변수 선언 x : 부수 효과 (side effect) 존재하기 때문
var 로 선언한 전역 변수가 window 기능을 덮어씌워 내장 기능 사용 불가 가능
선언 없이 변수를 할당하면, 해당 변수는 var로 선언한 전역 변수처럼 취급 된다.

Strick Mode

브라우저가 보다 엄격하게 작동하도록 만들어준다.
사용하려면, js 파일 상단에 'use strict' 라고 입력하면 된다.

profile
나아가기

0개의 댓글