TIL-2022/7/8

🏗️ 엄일경·2022년 7월 10일
0
post-thumbnail

Modern JS Deep Dive 읽기

:: 프로그래밍

요구사항을 분석하여 적절한 자료구조와 함수의 집합으로 변환하고 흐름을 제어하는 것

::: 작업분석

코드로 작성할 수 있게 요구사항을 정확하고 상세하게 설명하기

  • 복잡한 작업을 단순한 작업으로 나누기
  • 필요한 데이터를 정리하고 분류하기
  • 행위를 순서에 맞게 배열하기

:: 변수, Variables

데이터를 저장하기 위해 확보한 메모리 공간으로 식별자를 붙여 관리한다

::: 식별자, Identifier

  • 식별자는 값이 아니라 메모리 주소를 기억한다
  • 메모리 상에 존재하는 값을 식별할 수 있는 이름은 식별자다(변수, 함수, 클래스...)
  • 모든 식별자는 JS 실행 컨텍스트(execution context)에서 관리한다

::: 작동방식

:::: 선언, Declation

  • 런타임 이전, JS엔진이 식별자에 확보한 메모리 공간의 주소를 연결하는 작업

:::: 초기화, Initialization

  • 런타임 이전, 메모리의 쓰레기 값을 제거하기 위해 undefined 값을 저장하는 작업

:::: 대입, Assignment

  • 런타임, 초기화된 변수에 데이터저장하는 작업

:::: 호이스팅, Hoisting

  • 런타임 이전에 코드의 선두로 끌어올려진 것처럼 처리하는 작업
  • 모든 식별자는 호이스팅 처리된다(var, let, const, function, class...)

:::: var, let, const 비교하기

  • var 경우는 호이스팅 후에 바로 undefined 초기화
  • let, const 경우는 값을 대입하기 전에는 사용 불가(TDZ, Temporal Dead Zone)
  • let 경우는 재할당이 가능한 변수지만, const 경우는 재할당이 불가능한 변수

::: 이름 짓는 규칙, Naming convention

const firstName; // camel case

const first_name; // snake case

const FirstName; // pascal case

const strFirstName; // type hungarian case(type + identifier)
  • 일반적으로 변수/함수 이름에는 카멜 케이스, 클래스 이름에는 파스칼 케이스 사용

:: 표현식과 문, expression and statement

::: 값, value

식이 평가되어 생성된 결과

::: 리터럴, literal

값을 생성하는 표기법

::: 식, expression

새로운 값을 생성하거나 기존 값을 참조하는 표현

  • 값으로 대체될 수 있는 것은 식

::: 문, statement

최소 실행 단위 = 컴퓨터에게 내리는 명령

  • 선언문, 할당문, 조건문, 반복문
profile
사랑하는 사람들과 사랑받는 작품을 만들면서 살고 싶은 아저씨입니다.

0개의 댓글