[스파르타 _ 리액트 과정] 22일차

et Ji·2022년 11월 30일
0

TIL

목록 보기
27/40

📅 학습 일자 : 22. 11. 29

📜 진행 내용

  • [기타] 주특기 입문 발제
    • 자바스크립트 심화, 리액트 학습 안내
  • [강의] 자바스크립트 심화
    • Chap-01. 데이터 타입
    • Chap-02. 실행 컨텍스트

🚩 학습 목표

  • 자바스크립트의 데이터 종류에 대해 이야기할 수 있고, 각각 메모리에 어떻게 저장되고 사용 되고, 수거 되는지를 이해 할 수 있다.

    체크 리스트

    • 학습 목표 달성
    • 자바스크립트 문법 중, 주요 개념(데이터의 메모리 저장 구조)에 대해 다음 질문에 답할 수 있어요
      • var a = 3; 이 메모리에 저장되는 과정을 설명
      • a = 7; 이 되었을 때, 3이 더 이상 사용되지 않을 때 무슨일이 일어나는지 설명

💡 배운내용

▣ 주특기 입문 발제

  • 프로젝트시 역할 분담
    • 못하더라도, 작은 기능이라도 맡아서 할 것.
      잘하는 사람만 거의 맡아서 진행하지말고, 1명이 1인분을 할 수 있도록 해야한다.
  • 자바스크립트 공부시
    • 실행 컨텍스트 - 자바스크립트 문맥, 현재 자바스크립트의 눈이 어디에 향해있는지.
    • 강의 듣고, 강의자료 추가학습의 모던 자바스크립트 튜토리얼 학습하기 -> 반복하기
    • 이해 안가도 포기하지말고 계속 반복해서 학습할것.
    • 리액트 숙련 가기전에, 리액트 입문을 배우는 거고, 리액트 입문을 배우기 위해 자바스크립트 심화를 배우는 것.

🏃‍♀️ 긴 기간 몰입하기 위해서, 미래를 잘 설계하고 긍정적인 결과를 기대하자. 그래야 지치지않는다.

▣ 자바스크립트 심화

1-2. 데이터 타입의 종류

  • 데이터 타입 : 프로그래밍 언어에서 사용할 수 있는 데이터의 종류를 말한다.

    • 자바스크립트의 데이터 타입은 크게 기본형(premitive type)와 참조형(object/reference type)으로 나뉜다.
      • 기본형 : 숫자, 문자열, boolean, null, undefined, Symbol(ES6에서 추가)
      • 참조형 : 객체 - 배열, 함수, Date, 정규표현식, Map, Set
  • 기본형과 참조형의 차이점

    • 복제의 방식
  • 기본형 : 값이 담긴 주소값을 바로 복제

  • 참조형 : 값이 담긴 주소값들로 이루어진 묶음을 가리키는 주소값 복제


🔎 데이터 타입 이해를 위한 배경 지식

  1. 메모리와 데이터
    • 코드에서 사용되는 모든 데이터는 메모리에 저장하고 참조할 수 있어야 한다.
    • 컴퓨터는 모든 데이터를 0 또는 1로 바꿔 기억하며, 하나의 메모리 조각을 비트라고 한다.
    • 모든 데이터는 byte(8bit) 단위의 식별자인 메모리 주소값을 통해서 서로 구분이 된다.
      • bit 단위로 구분이 되면 너무 비효율 적이기 때문에 새로운 단위인 byte를 사용한 것
        • 1 bit = 8 byte
  2. 식별자와 변수
    - 변수 : 변할 수 있는 데이터
    - 식별자 : 어떤 데이터를 식별하는 데 사용하는 이름, 변수명

1-3. 데이터 할당

  • 변수 선언과 할당의 구조

자바스크립트는 변수명이 할당된 주소에 직접 데이터를 저장하지 않는다.

  • 변수는 변수 영역에, 데이터는 데이터 영역에, 오브젝트는 오브젝트 영역에 할당이 된다고 생각하면 쉽다.

  1. 변수 선언 - 변수 영역에 변수명이 저장됨

    var a;

  2. 데이터 할당 - 데이터 영역에서 ‘abc’라는 값을 찾아보고 있으면 그 데이터의 주소를, 없다면 새로 할당한 데이터의 주소를 변수명의 변수에 저장한다.

    var a;
    a = 'abc';
    
    var a='abc';
  3. 데이터 변경 - 새로 할당하는 값 ‘def’라는 값에 대해 2번 과정을 거친다. 이 때, 이전에 할당했던 값 ‘abc’는 이제 어떤 식별자와도 연결되어 있지 않기 때문에, 가비지 컬렉션이라는 자동 메모리 관리 방법에 의해 자동 해제 된다.

    단, 메모리에서 언제 해제될지는 예측할 수 없다.

    var a;
    a = 'abc';
    var a='abc';
    a = 'def'

👉 변수 영역에 값을 직접 대입하지 않는 이유는?

(= 변수영역과 데이터영역을 나누는 이유)

  1. 자유로운 데이터 변환을 위해
    • 이미 입력한 문자열이 길어진다면, 처음 차지한 데이터 영역에서 확장해야 되기 때문에, 옆에 있는 다른 데이터들까지 이동하게 해야 된다.
  2. 메모리의 효율적인 관리를 위해
    • 반복되는 데이터를 여러 번 저장해야될 경우 ※ 숫자형 = 8byte, 주소 공간의 크기 = 2byte
      • 예) ‘5’ 를 800개 저장한다면
        1. 변수 영역에 값을 바로 할당한다고 할 때

          8byte * 500개 = 4000byte

        2. 데이터 영역에 값을 저장 후 해당 주소를 변수 공간에 입력할 때

          2byte * 500 + 8byte = 1008byte


🎯 문제와 해결

  • 어려워서 반복해서 강의를 듣고, 다른 자료들을 찾아봤다.

⁉️ 어려웠던 내용

  • 메모리 관점에서의 데이터 할당

❎ 한 번 더 공부할 내용

  • 얕은 복사, 깊은 복사 연습하기.

🔗 출처 및 참고자료

profile
codesign

0개의 댓글