19일차 - 자료형, 스코프, 클로저

김민찬·2021년 5월 28일
0

취업으로의 여정

목록 보기
20/196

오늘은 개념적으로 이해하는 공부를 진행했다.
공부 내용은 1. 자료형 2. 스코프 3. 클로저 순으로 진행 하였다.

자료형

자료형은 두 가지로 나누어 진다.
primitive type(원시 자료형)과 reference type(참조 자료형)이다.

  • primitive type의 종류는
    number, boolean, undefined, string, bigint, symbol 6가지가 있고, 추가적으로 null도 primitive type 처럼 취급된다.
여기서 BigInt는 number 원시 값이 안정적으로 나타낼 수 있는 최대치인 2<sup>53</sup>-1 보다 큰 정수를 표현하는 내장 객체이다.
Symbol() 함수는 symbol(심볼) 형식의 값을 반환하는데, symbol은 객체 속성을 만들 수 있는 원시 데이터 형식이다. 
Symbol()로 부터 반환되는 모든 심볼 값은 고유하다.

primitive type은 보관함에 선언으로 이름을 붙히고 안에 자료를 넣는 방식으로 이해하면 된다.(stack에 보관)

reference type의 종류는
주로 사용하는 array,object, function이 있고 primitive type이 아니면 전부 reference type이다.

reference type은 primitive type과 다르게 보관함에 선언으로 이름을 붙히고 안에 자료들의 주소를 넣는다.
그리고 heap라는 저장소에 자료를 보관해서 주로를 불러오면 heap에서 참조를 하는 방식이다.
그래서 reference type은 고정된 크기의 보관함이 아니라 동적으로 크기가 변한다.

primitive type과 reference type의 차이로는

  • primitive type은 변수 간에 데이터를 복사할때, 데이터 값이 복사가 된다. 그러므로 기존 데이터에 영향이 가지 않는다.
  • reference type은 데이터의 주소를 복사한다. 그래서 복사한 데이터에서 원소를 변경할 경우 주소 안에 있는 데이터도 변형이돼서 기존 데이터에 영향을 준다.

Scope

scope는 변수들의 유효한 범위이다.
Scope의 공부는 하루만으로 완료가 될거같지 않아서 오늘은 간단하게 정리하고 나중에 추가적으로 velog 작성을 하겠다.

  • 가장 바깥의 Scope는 Global Scope라고 부른다. 그 외의 모든 Scope는 Local Scope라고 한다.
  • Local Scope는 Global Scope보다 높은 우선순위를 가진다.
  • 우선순위가 높은 Scope는 우선 순위가 낮은 Scope에게 접근할 수 있지만, 반대는 불가능 하다.

전역 변수는 최소화 해야된다고 한다.
웹이나 어플리케이션을 만들 때, 내가 직접 작성하지 않은 많은 다른 함수와 로직이 포함되는데, 같은 이름으로 전역 변수를 선언하면 side effect 라고 불리는 문제가 발생한다.

그래서 var 키워드를 주의해야 한다.
var 키워드는 블록 스코프를 무시해서 let과 const를 주로 사용하는 것이 좋다.

선언 없이 변수를 할당하면, 해당 변수는 var로 선언한 전역변수 처럼 취급되는데, 이를 방지하는 방법음

'use strict';

라고 JavaScript 상단에 적어서, Strict Mode를 사용하는 것이다. 그러면 선언 없는 변수를 할당할 경우 에러로 판단한다.

Closure

Closure는 아직 내용에 대한 이해를 하는 중이다.
섣불리 작성하면 혼란을 줄 수 있으므로 우선 MDN링크만 작성해 놓겠다.
Closure MDN

profile
두려움 없이

0개의 댓글