기초적인 부분이긴 하지만 유니코드 값 비교 부분은 잘 살펴볼 필요가 있다. 꼭 자바스크립트가 아니더라도 각 언어에서 유니코드를 어떻게 처리하고 다루는지 알아두면 유용하다. 발생할 수 있는 수많은 케이스가 있는데 그 중 하나로 음악 스트리밍 서비스인 spotify가 사용자명으로 유니코드를 사용해 보안 문제가 발생했었던 사례를 들 수 있다.
Chapter 2 어휘 구조 Lexical Structure
어휘 구조는 프로그래밍 언어의 가장 기초적인 문법.
2.1 캐릭터 셋
ASCII와 Latin-1를 포함하고 있는 유니코드
2.1.1 대소문자 구분 – 구분한다
html은 구분 안하므로 유의
2.1.2 공백, 줄바꿈, 양식 문자
공백은 무시됨, 가독성을 위해 사용 (예외 2.5)
줄바꿈은 단일 행 실행 종료로도 처리됨 (세미콜론 없어도 된다는 말)
식별자 빼고 LTR, RTL MARK 등 양식 문자를 사용할 수 있음
2.1.3 유니코드 탈출 문자열
유니코드 미지원 환경을 위한 유니코드 사용
\u + 4자리 8진수 주소
"résumé" === "r\u00e9sum\u00e9" // => true
2.1.4 표준화 Normalization
유니코드는 같은 글자를 여러 방법으로 표기할 수 있음
é는 유니코드 문자 하나로 표기할 수도 있고 e + ́ 로도 표시할 수 있음
console.log("e\u0301", "\u00e9"); // => é é
console.log("e\u0301" === "\u00e9"); // => false
자바스크립트는 작성된 코드를 이미 표준화 된 것으로 보고 별도로 표준화 처리 안함
2.2 주석
/* 블럭주석 */
/*
* 블럭주석
*/
// 인라인 주석
2.3 문자열 Literals
문자열은 데이터 값을 의미
number, string(Chapter 3), boolean, 정규표현식(Chapter 10), null, array, object
2.4 식별자와 예약어
문자, _, $, 숫자
첫글자는 숫자 못씀
일반적으로 아스키 문자와 숫자
유니코드 식별자도 가능
2.4.1 예약어
예약어는 식별자로 쓸 수 없음 – 기본 함수, 타입 등등
예약어를 무심코 쓰더라도 예약어 썼다고 에러를 출력하므로 외울 필요는 없어 보임
(변수명을 undefined로 한다거나 -_ 혼난다)
2.5 선택적 세미콜론
다른 언어처럼 각각 명령문 끝에 ; 넣음
세미콜론 대신 줄바꿈으로 생략도 되는데 말이 안되는 줄바꿈은 알아서 인식함
작성 의도와 다르게 실행되는 예시 – 코드의 명확성을 위해 세미콜론 꼭 쓰자