🌱 ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [자바스크립트 완벽 가이드] 2장 - 어휘 구조
    Reading/Tech 2022. 5. 17. 16:59
    🍀 목차
    2.1 자바스크립트 프로그램의 텍스트
    2.3 리터럴
    2.4 식별자와 예약어
    2.5 유니코드
    2.6 선택 사항인 세미콜론

    2.1 자바스크립트 프로그램의 텍스트

    • 자바스크립트는 대소문자를 구별하기에 whileWhile이나 WHILE로 써서는 안 된다.
    • 캐리지 리턴(CR, \r), 라인피드(LF, \n), 스페이스 문자, 탭, ASCII 제어 문자, 다양한 유니코드 스페이스 문자를 모두 공백으로 인식한다.

     

    2.3 리터럴

      리터럴(literal)은 프로그램 안에 직접 쓴 데이터 값이다. 

    12 
    1.2
    "hello world"
    'Hi'
    true
    false
    null

     

    2.4 식별자와 예약어

     자바스크립트에서 식별자는 상수, 변수, 프로퍼티, 함수, 클래스의 이름에 사용하고 일부 루프의 라벨로 사용한다. 반드시 글자(알파벳 권장), 밑줄(_), 달러 기호($)로 시작해야 한다.

    • 밑줄(_)로 시작 : class의 protected 프로퍼티 명 앞에 자주 붙는다. _price =0; 이런 느낌!
    • 달러 기호($)로 시작 : document.getElementById()querySelector()로 갖고 온 요소를 의미하거나 jQuery 변수들을 의미한다.

     

     그 뒤에는 글자, 숫자, 밑줄, 달러 기호를 쓸 수 있다. (첫자리에 숫자를 허용하지 않는 것은 식별자와 숫자를 쉽게 구별하기 위해서이다.)

    i
    my_variable_name
    v13
    _dummy
    $str

     

     또한 예약어는 일반적인 식별자로 사용할 수 없다. (while이나 break라던지...)

    SyntaxError가 뜬다.

     

    2.4.1 예약어

     예약어는 예약된 키워드이므로 상수, 변수, 함수, 클래스의 이름으로 사용할 수 없다. (객체의 프로퍼티 이름으로는 사용할 수 있다고 한다.😯) 나머지 일부(from, of, get, set 등)는 제한적인 컨텍스트에서 문법적 모호함 없이 사용되므로 써도 문제는 없다. let 같은 키워드는 하위 호환성을 위해 완전히 예약어로 분리할 수는 없어서, 식별자로 사용할 수 있는 경우와 없는 경우를 나누는 복잡한 규칙이 존재한다.

     

    그냥 웬만하면 from, set, target 등을 제외하고는 예약어를 식별자로 사용하지 말자.

     

    as const export get null target void
    async continue extends if of this while
    await debugger false import return throw with
    break default finally in set true yield
    case delete for instanceof static try  
    catch do from let super typeof  
    class else function new switch var  
    enum implements interface package private protected public

     

     마지막 줄의 경우는 미래 버전에서 사용될 수 있어 제한된다. 스트릭트 모드에서는 arguments와 eval은 식별자로 사용할 수 없다. 

     

    2.5 유니코드

     유니코드 문자는 모두 문자열이나 주석에 사용할 수 있다. 식별자에도 유니코드 글자, 숫자, 상형 문자를 모두 허용한다.(이모지는 불가)

     

    2.5.1 유니코드 이스케이프 시퀀스

     유니코드 이스케이프는 \u 문자로 시작하고 그 뒤에 정확히 네 개의 16진수 숫자(0-9, A-F)를 쓰거나, 1~6개의 16진수 숫자를 중괄호 안에 쓰는 형태이다. 문자열 리터럴, 정규 표현식 리터럴, 식별자에 사용할 수 있다. 초기 버전은 숫자 네 개를 쓰는 이스케이프 시퀀스만 지원했지만(\u00e9) ES6에서는 이모지처럼 16비트 이상이 필요한 유니코드 코드 포인트를 더 잘 지원하기 위해 중괄호 문법을 도입했다.

     주석에 유니코드 이스케이프를 쓸 수 있긴 하지만, 주석은 무시되므로 그냥 ASCII 문자로 취급할 뿐이다. 

     

    2.5.2 유니코드 정규화

     é의 경우 단일 유니코드 문자 \u00E9로 인코드 할 수 있고, 일반적 ASCII 문자 e 다음에 악센트 조합 기호 \u0301을 붙여 인코드할 수도 있다. 눈으로는 구별할 수 없지만 둘은 이진 인코딩이 다르다. 혼란스러운 일을 만들 수 있는 것. 유니코드 정규화를 통해 서로 다르지만 눈으로는 구별할 수 없는 식별자가 생기지 않도록 해야 한다. 

     

    2.6 선택 사항인 세미콜론

     자바스크립트는 줄바꿈 다음에 오는 공백 아닌 문자를 현재 문에 이어진다고 판단할 수 없을 때 줄 바꿈을 세미콜론으로 취급한다. 

    let a
    a
    =
    3
    console.log(a)
    
    //는
    
    let a;
    a=3;
    console.log(a); 
    
    //로 해석된다.

     일반적으로 문장이 (, [, /, +로 시작한다면 이전 문장이 계속되는 것으로 해석될 수 있으므로 프로그래머 중에서는 방어적으로 세미콜론을 삽입하기도 한다.

    let x-0
    ;[x,x+1,x+2].forEach(console.log)​

     

     

     return, throw, yield, break, continue 문의 경우에는 뒤에 어떤 표현식을 쓴다면, 그 사이에 줄바꿈이 들어가서는 안된다. 자바스크립트가 그 줄 바꿈을 세미콜론으로 해석한다.

    return
    true;
    
    //를
    
    return; true;
    
    //로 해석한다.

     

     화살표 함수 =>도 반드시 매개변수 리스트와 같은 행에 있어야 한다.

     


     

    자바스크립트 완벽 가이드

    25년 가까이 자바스크립트 프로그래머에게 가장 사랑받은 베스트셀러이며 이번 7판은 자바스크립트 2020 버전에 맞게 완전히 개정됐다. 책 전반에 걸쳐 흥미롭고 유용한 예제를 만날 수 있으며

    www.aladin.co.kr

    "JavaScript: The Definitive Guide, Seventh Edition, by David Flanagan (O'Reilly). Copyright 2020 David Flanagan, 978-1-491-95202-3."

    해당 게시글은 "자바스크립트 완벽 가이드"를 개인 학습용으로 정리한 내용입니다.

    댓글

🍀 Y0ungZ dev blog.
스크롤 버튼