ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [프로그래밍 이론] 모던자바스크립트 Deep Dive(2)
    IT 지식 2021. 4. 3. 08:11
    728x90

    4장

     

    p.35

    메모리는 데이터를 저장할 수 있는 메모리 셀의 집합체다. 메모리 셀 하나의 크기는 1 바이트(8비트)이며, 컴퓨터는 메모리 셀의 크기, 즉 1 바이트 단위로 데이터를 저장하거나 읽어들인다.

     

    p.36

    메모리 주소를 통해 값에 직접 접근하는 것은 치명적인 오류를 발생시킬 가능성이 매우 높은 매우 위험한 일이다. 만약 실수로 운영체제가 사용하고 있는 값을 변경하면 시스템을 멈추게 하는 치명적인 오류가 발생할 수도 있다. 따라서 자바스크립트는 개발자의 직접적인 메모리 제어를 허용하지 않는다.

     

    변수는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름을 말한다.

     

    p.38

    변수 이름을 식별자라고도 한다. 식별자는 어떤 값을 구별해서 식별할 수 있는 고유한 이름을 말한다. 

     

    p.39

    식별자는 값이 아니라 메모리 주소를 기억하고 있다.

     

    변수 선언이란 변수를 생성하는 것을 말한다. 좀 더 자세히 말하면 값을 저장하기 위핸 메모리 공간을 확보하고 변수 이름과 확보된 메모리 공간의 주소를 연결해서 값을 저장할 수 있게 준비하는 것이다. 

     

    p.41

    자바스크립트 엔진은 변수 선언을 다음과 같은 2단계에 거쳐 수행한다.
    - 선언 단계: 변수 이름을 등록해서 자바스크립트 엔진에 변수의 존재를 알린다.

    - 초기화 단계: 값을 저장하기 위한 메모리 공간을 확보하고 암묵적으로 undefined를 할당해 초기화 한다.

     

    p.42

    만약 선언하지 않은 식별자에 접근하면 ReferenceError(참조 에러)가 발생한다.

     

    변수 선언이 소스 코드가 한 줄씩 순차적으로 실행되는 시점, 즉 런타임이 아니라 그 이전 단계에서 먼저 실행되기 때문이다.

     

    p.43

    변수 선언문이 코드의 선두로 끌어 올려진 것처럼 동작하는 자바스크립트 고유의 특징을 변수 호이스팅이라고 한다.

     

    변수 선언은 소스코드가 순차적으로 실행되는 시점인 런타임 이전에 먼저 실행되지만 값의 할당은 소스코드가 순차적으로 실행되는 시점인 런타임에 실행된다.

     

    p.45

    변수에 값을 할당할 때는 이전 값 undefined가 저장되어 있던 메모리 공간을 지우고 그 메모리 공간에 할달 값 80을 새롭게 저장하는 것이 아니라 새로운 메모리 공간을 확보하고 그곳에 할당 값 80을 저장한다는 점에 주의하자.

     

    p.46

    가비지 콜렉터

    가비지 콜렉터는 어플리케이션이 할당한 메모리 공간을 주기적으로 검사하여 더 이상 사용되지 않는 메모리를 해제하는 기능을 말한다. 더 이상 사용되지 않는 메모리란 간단히 말하자면 어떤 식별자도 참조하지 않는 메모리 공간을 의미한다. 자바스크립트는 가비지 콜렉터를 내장하고 있는 매니지드 언어로서 가비지 콜렉터를 통해 메모리 누수를 방지한다.

     

    5장

     

    p.51

    리터럴은 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법을 말한다.

     

    p.53

    값으로 평가될 수 잇는 문은 모두 표현식이다.

     

    p.54

    문은 프로그램을 구성하는 기본 단위이자 최소 실행 단위이다. 

     

    문은 여러 토큰으로 구성된다. 토큰이란 문법적인 의미를 가지며, 문법적으로 더 이상 나눌 수 없는 코드의 기본 요소를 말한다.

     

    6장

     

    p.66

    이처럼 undefined는 개발자가 의도적으로 값을 할당하기 위한 값이 아니라 자바스크립트 엔진이 변수를 초기화할 때 사용하는 값이다. 

     

    p.67

    심벌은 ES6에서 추가된 7번째 타입으로 변경 불가능한 원시 타입의 값이다. 심벌 값은 다른 값과 중복되지 않는 유일무이한 값이다. 따라서 주로 이름이 충돌할 위험이 없는 객체의 유일한 프로퍼티 키를 만들기 위해 사용한다.

     

    p.69

    자바스크립트 엔진은 데이터 타입, 즉 값의 종류에 따라 정해진 크기의 메모리 공간을 확보한다. 즉, 변수에 할당되는 값의 데이터 타입에 따라 확보해야할 메모리 공간의 크기가 결정된다.

     

    p.72

    자바스크립트의 변수는 선언이 아닌 할당에 의해 타입이 결정(타입추론) 된다. 그리고 재할당에 의해 변수의 타입은 언제든지 동적으로 변할 수 있다. 이러한 특징을 동적 타이핑이라 하며, 자바스크립트를 정적 타입 언어와 구별하기 위해 동적타입 언어라 한다.

     

    8장 

     

    p.99

    dedault 문에는 break문을 생략하는 것이 일반적이다. default 문은 switch 문의 맨 마지막에 위치하므로 default 문의 실행이 종료되면 switch문을 빠져나간다. 따라서 별도의 break문이 필요없다.

     

    9장

     

    p.108 

    개발자가 의도적으로 값의 타입을 변환하는 것을 명시적 타입 변환 또는 타입 캐스팅이라 한다.

     

    개발자의 의도와는 상관없이 표현식을 평가하는 도중에 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환되기도 한다. 이를 암묵적 타입 변환 또는 타입 강제 변환이라 한다. 

     

    p.123

    null 병합 연산자 ??는 좌항의 피연산자가 null 또는 undefined인 경우 우항의 피연산자를 반환하고, 그렇지 않으면 좌항의 피연산자를 반환한다. null 병합 연산자 ?? 는 변수에 기본값을 설정할 때 유용하다.

    728x90

    댓글

Designed by Tistory.