TIL 14일차

devTiana·2021년 6월 4일
0

Today I Learned

목록 보기
14/24
post-thumbnail

[ JS/Node ] 핵심 개념과 주요 문법

원시 자료형과 참조 자료형

원시자료형(Primitive type date)

: number, boolean, symbol(null), undefined, string, bigint

  • 객체가 아니면서 method를 가지지 않는 6가지 타입
  • 배열, 객체, 함수 빼고 모두 원시자료형에 해당한다.
  • 모두 "하나"의 데이터를 담고 있다.
  • stack 안에 "값(value)"이 저장된다.
  • 원시타입 데이터는 각 변수 간에 원시타입 데이터를 복사해도 stack에 있는 데이터 값을 복사하기 때문에 기존의 원본값에는 영향이 없다.

참조자료형(Reference type data)

: array, object, function

  • 참조자료형은 하나의 주제는 있지만 분명 서로 다르고, 여러 개의 데이터를 갖고 있다.
  • 저장소의 주소가 변하지 않도록 하기 위해 stack 안에 "heap의 주소(reference)"가 담기고 heap이라는 특별한 보관함에 값이 저장된다.
  • heap은 "데이터 크기에 따라 사이즈가 동적으로 변하는 보관함"이다.
  • 참조타입 데이터는 stack에 있는 heap의 주소를 복사하기 때문에 복사한 데이터에서 원소 변경시 주소 안의 데이터가 변경되기 때문에 기존 데이터에 영향을 준다.

스코프

scope : 변수의 유효범위

  • 변수에는 접근할 수 있는 유효 범위가 존재한다. 그래서 중괄호(블록) 안쪽에 변수가 선언되었는가, 바깥쪽에 선언되었는가의 선언 위치가 중요하다. 이 범위를 스코프라고 부르고 함수로 범위가 나뉠수도 있다.

변수 접근 범위

  • 바깥쪽 스코프에서 선언한 변수는 안쪽 스코프에서 접근하여 사용할 수 있다.
  • 안쪽 스코프에서 선언한 변수는 바깥쪽 스코프에서 접근하여 사용할 수 없다.

스코프의 정의와 규칙

  1. 안쪽 스코프에서 바깥쪽 스코프로는 접근할 수 있지만 반대로는 불가능하다.
  2. 스코프는 중첩이 가능하다. (스코프는 마치 중첩된 울타리와 같다.)
  3. 가장 바깥쪽의 스코프는 전역 스코프(Global Scope) ↔ 지역 스코프(Local Scope)
  4. 지역 변수는 전역 변수보다 더 높은 우선순위를 가진다.

스코프의 종류

1. 블록 스코프(Block Scope) : 중괄호로 둘러싼 범위. 중괄호를 기준으로 범위를 구분한다.
2. 함수 스코프(Function Scope) : 함수로 둘러싼 범위. 함수선언식 및 함수표현식은 함수스코프를 만든다.

※ 주의사항 : 화살표 함수는 블록 스코프로 취급하고, function 키워드를 사용하면 함수 스코프로 취급한다.

블록 스코프와 var 키워드

  • var 키워드는 블록 스코프를 무시하고, 함수 스코프만 따른다.
  • 블록 단위로 스코프를 구분했을 때, 더 예측 가능한 코드를 작성할 수 있기 때문에 let 키워드를 권장한다.
  • var 키워드보다 let 키워드가 안전한 이유 : var 키워드는 재선언해도 에러가 발생하지 않지만 let 키워드는 재선언하면 에러를 출력해 재선언을 방지해준다. 보통 코딩할 때 재선언하는 경우는 버그이며 let 키워드가 이러한 경우를 막아준다.

const 키워드

  • const 키워드는 값이 변하지 않는 상수를 정의할 때 사용한다.
  • 값의 변경을 최소화하여 보다 안전하게 프로그램 구현이 가능하다.
  • 값을 새롭게 할당할 일이 없다면, const 키워드 사용을 권장한다.
  • 값을 재할당하게 되면 TypeError를 출력한다.(의도하지 않은 값의 변경 방지 가능)
profile
개발자

0개의 댓글