ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [TIL] 0618 변수
    Today I Learned 2024. 6. 18. 08:37

     

    오늘의 학습

    모던 자바스크립트 Deep Dive를 처음부터 다시 읽기 시작했다.

     

    04장 변수

    10 + 20

     

    사람은 계산과 기억을 모두 두뇌에서 하지만, 컴퓨터는 CPU를 사용해 연산하고, 메모리를 사용해 데이터를 기억한다.

    예제의 숫자 값 10과 20은 메모리 상의 임의의 위치(메모리 주소)에 저장되고 CPU는 값을 읽어 연산을 수행한다.

     

    연산 결과가 메모리에 저장되었지만 값 30을 재사용할 수 없다. 메모리 주소를 통해 직접 접근하면 치명적인 오류를 발생시킬 가능성이 높다. 실수로 운영체제가 사용하고 있는 값을 변경하면 시스템을 멈추게 하는 치명적인 오류가 발생할 수도 있다.

     

    따라서 자바스크립트는 개발자의 직접적인 메모리 제어를 허용하지 않는다. 프로그래밍 언어는 값을 재사용하기 위해 변수라는 메커니즘을 제공한다. 

     

    변수는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 메모리 공간을 식별하기 위해 붙인 이름을 말한다. 변수 이름을 사용해 참조를 요청하면 자바스크립트 엔진은 변수 이름과 매핑된 메모리 주소를 통해 메모리 공간에 접근해서 저장된 값을 반환한다.

     

     

    변수 선언

    - 값을 저장하기 위한 메모리 공간을 확보하고 변수 이름과 확보된 메모리 공간의 주소를 연결해서 값을 저장할 수 있게 준비하는 것이다.

     

    자바스크립트 엔진은 변수 선언을 2단계 거쳐 수행한다

     

    1. 선언단계 : 변수 이름을 등록해서 자바스크립트 엔진에 변수의 존재를 알린다. 
    2. 초기화 단계 : 값을 저장하기 위한 메모리 공간을 확보하고 암묵적으로 undefined를 할당해 초기화한다.

    만약 초기화 단계를 거치지 않으면 확보된 메모리 공간에는 이전에 사용했던 값이 남아 있을 수 있다.

     

    console.log(score); // undefined
    
    var score; // 변수 선언문

     

    var 키워드를 사용한 변수 선언은 선언 단계와 초기화 단계가 동시에 진행된다. 

     

    위 코드에서 참조 에러가 발생하지 않고, undefined가 출력된다. 이는 변수 선언이 코드가 순차적으로 실행되는 런타임 이전 단계에서 먼저 실행된다는 증거다. 이처럼 변수 선언문이 코드의 선두로 끌어 올려진 것처럼 동작하는 자바스크립트 고유의 특징을 변수 호이스팅이라 한다.

     

     

    오늘의 할 일

    ☀️ 오전

    ❌ 전날 면접 질문 5개 암기
    ✔️ 이력서 수정 or 회사 지원
     

    🌈 오후

    ❌ 프로젝트 리팩토링
    ✔️ 자바스크립트 공부
     

    🌙 저녁

    ✔️ 면접 질문 5개 답변 준비
    ✔️ TIL 작성
     

    오늘의 회고

    회사 3곳 지원

     

    'Today I Learned' 카테고리의 다른 글

    [TIL] 0729 표현식과 문  (0) 2024.07.29
    [TIL] 0620 프로젝트 리팩토링 마무리  (0) 2024.06.20
    [TIL] 0612  (0) 2024.06.12
    [TIL] 0607  (0) 2024.06.07

    댓글

Designed by Tistory.