모던 자바스크립트 Deep Dive 스터디 4일차

김동환·2023년 7월 3일

Learn_JavaScript

목록 보기
6/10
post-thumbnail

4일차 주요 내용 정리


💡 4장 변수 (2/2)

값의 할당

//실행순서
console.log(score); // 2. undefined
var score; // 1. 변수 선언문
score = 80; // 3. 값의 할당
console.log(score); // 4. 80
  • 변수 선언은 런타임 이전에 먼저 실행되고 값의 할당은 런타임에 실행된다. 따라서 score 변수에 값을 할당하는 시점에는 이미 변수 선언이 완료된 상태이며, 이미 undefined로 초기화되어 있다.
  • 언매니지드 언어(unmanaged language)와 매니지드 언어(managed language)

    프로그래밍 언어는 메모리 관리 방식에 따라 언매니지드 언어와 매니지드 언어로 분류할 수 있다.
    C언어 같은 언매니지드 언어는 개발자가 명시적으로 메모리를 할당하고 해제 가능, 메모리 제어를 개발자가 주도할 수 있으므로 개발자의 역량에 따라 최적의 성능을 확보할 수 있지만 그 반대의 경우 치명적 오류를 생산할 가능성도 있다.
    자바스크립트 같은 매니지드 언어는 메모리의 할당 및 해제를 위한 메모리 관리 기능을 언어 차원에서 담당하고 더 이상 사용하지 않는 메모리의 해제는 가비지 컬렉터가 수행하며, 개발자가 관여할 수 없다. 개발자의 역량에 의존하는 부분이 상대적으로 작아져 일정한 생산성을 확보할 수 있다는 장점이 있지만 성능 면에서 어느 정도의 손실은 감수할 수밖에 없다.

식별자 네이밍 규칙

  • 식별자는 특수문자를 제외한 문자, 숫자, 언더스코어(_), 달러 사인($)을 포함할 수 있다.
  • 단, 식별자는 특수문자를 제외한 문자, 언더스코어(_), 달러 사인($)으로 시작해야 한다. 숫자로 시작하는 것은 허용하지 않는다.
  • 예약어는 식별자로 사용할 수 없다.

    JS 예약어(reserved word)

    awaitbreakcasecatchclassconst
    continuedebuggerdefaultdeletedoelse
    enumexportextendsfalsefinallyfor
    functionifimplements*importininstanceof
    interface*let*newnullpackage*private*
    protected*public*returnsuperstatic*switch
    thisthrowtruetrytypeofvar
    voidwhilewithyield*

    식별자로 사용 가능하나 Strict Mode 에서는 사용 불가 (strict mode :* 애플리케이션 내의 잠재적인 문제를 알아내기 위한 도구)**

  • 자바스크립트는 대소문자를 구별하므로 다음 변수는 각각 별개의 변수다.
    var firstname;
    var firstName;
    var FIRSTNAME;
  • 4가지 유형의 네이밍 컨벤션(naming convention)
    // 카멜 케이스(camelCase)*
    var firstName;
    
    // 스네이크 케이스(snake)_case
    var first_name;
    
    // 파스칼 케이스(PascalCase)*
    var FirstName;
    
    // 헝가리언 케이스(typeHungarianCase)
    var strFirstName; // type + idenifier
    var $elem = document.getElementById('myId'); // DOM 노드
    var observable$ = fromEvent(document, 'click'); // RxJS 옵저버블
profile
프론트엔드 개발자

0개의 댓글