Chapter [ 스코프 ]

이재협·2021년 9월 8일
0

[JS / Node]

목록 보기
8/13

스코프란?

[ 변수의 유효범위 ]
변수에 접근할 수 있는 범위가 존재한다. 중괄호(블록) 안쪽에 변수가 선언되었는가, 바깥쪽에 변수가 선언되었는가가 중요. 이 범위를 스코프라고 한다.

  • 스코프는 중첩이 가능, 스코프는 마치 중첩된 울타리와 같다.

  • 가장 바깥쪽의 스코프는 전역 스코프

  • 전역이 아닌 다른 스코프는 전부 지역 스코프

  • 지역 변수는 전역 변수보다 더 높은 우선순위를 가진다.

  • 블록 스코프(block scope)는 중괄호를 기준으로 범위가 구분

  • 함수 스코프 function 키워드가 등장하는 함수 선언식 및 함수 표현식

  • 화살표 함수는 블록 스코프로 취급

  • 전역 변수는 가장 바깥 스코프에 정의한 변수. 따라서, 어디서든 접근이 가능. 전역 변수를 많이 만드는 것은 그다지 좋은 선택이 아니다.

  • 너도나도 똑같은 이름으로 전역 변수를 선언하려고 한다면 분명 문제가 발생할 것이다. 이를 side effect라고 한다. 전역 변수를 최소화하는 것은 side effect를 줄이는 좋은 방법

  • 선언 없이 변수를 할당하지 마세요. 선언 없이 변수를 할당하면, 해당 변수는 var로 선언한 전역 변수처럼 취급

  • Strict Mode는 브라우저가 보다 엄격하게 작동하도록 만들어준다. js 파일 상단에 'use strict' 라고 입력

[ 스코프 문제 푸는법 ]

  1. 지역 / 전역 스코프 나누기
  2. 선언된 변수를 찾고, 지역 / 전역 변수인지 명시
  3. 선언되지 않은 변수가 가리키는 대상 찾기 (안에서 밖으로)

[ let, const, var 비교 ]

  • var 키워드는 for 문이 만들어낸 블록 스코프를 무시하고, 함수 스코프만 따른다.

  • let과 const를 주로 사용

  • 전역 변수를 var로 선언하는 것은 브라우저의 내장 기능을 사용하지 못하게 만들 수도 있다.

  • 보통 코드를 작성할 때 블록은 들여쓰기가 적용되고, 그 구분이 시각적으로 분명. 따라서 많은 사람들은 블록 스코프를 기준으로 코드를 작성하고, 생각하기 마련. 그러나 var는 이 규칙을 무시하므로, 코드를 작성하는 사람이 블록 스코프/함수 스코프에 대한 이해가 없으면 코드가 다소 혼란스러울 수 있다.

  • var 보다는 let 으로 변수 선언을 하는 것을 권장

  • let 키워드는 재선언을 방지

  • 변하지 않는 값, 곧 상수(constant)를 정의할 때에는 const를 이용

  • const는 값의 재할당이 불가능

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

profile
코딩만을 잘하는 개발자가 아닌 문제를 해결하는 개발자가 되어보자

0개의 댓글

관련 채용 정보