자바스크립트 완벽가이드 2장에 해당하는 부분이고, 읽으면서 자바스크립트에 대해 새롭게 알게된 부분만 정리한 내용입니다.
프로그래밍 언어의 어휘구조란 그 언어로 프로그램을 작성할 때 지켜야 할 기본적인 규칙의 집합이다.
자바스크립트의 식별자의 첫 시작은 글자(알파벳 사용을 권함), 밑줄(_), 달러 기호($)로 시작하고 그 뒤에 글자, 숫자, 밑줄, 달러 기호를 쓸 수 있다.
첫 자리에 숫자를 허용하지 않는 이유는 JS에서 식별자와 숫자를 쉽게 구별하기 위함이다.
JS에서 사용하고 있는 예약어를 식별자로 사용하지 않는 것이 좋다.
수학 기호나 영어가 아닌 언어에서 쓰는 문자를 상수나 변수에 쓸수 있다.
const Π = 3.14;
console.log(Π); // 3.14
유니코드 이스케이프는 자바스크립트 문자열 리터럴, 정규 표현식 리터럴, 식별자에 사용할 수 있다.
const é = 1;
console.log(é); // 1
console.log('\u{E9}'); // é
자바스크립트는 줄바꿈을 전부 세미콜론으로 취급하지는 않는다.
let a
a
=
3
console.log(a)
다음과 같은 코드에서 JS는 다음과 같이 해석한다.
let a; a = 3; console.log(a);
let a a
를 분석할 수 없으므로 첫 번째 줄바꿈을 세미콜론으로 취급하고, 두 번째 a는a = 3;
이라는 더 긴 문으로 분석을 계속할 수 있으므로 두 번째 줄바꿈은 세미콜론으로 취급하지 않는다.
그러나 이렇게 문을 종료하는 규칙은 아래와 같은 의외의 결과를 부를 수 있다.
let y = x + f
(a+b).toString()
⬇️
let y = x + f(a+b).toString();
이러한 결과를 막기위해 방어적인 목적으로 문 앞에 세미콜론을 삽입하는 경우도 있다.
let x = 0
;[x, x+1, x+2].forEach(console.log)
이렇게 하는 것보다.. 정상적으로 세미콜론 찍는게 나은듯?
자바스크립트가 두 번째 행을 첫 번째 행의 연속이라고 분석할 수 없을 경우 줄바꿈을 세미콜론으로 해석한다는 규칙에는 3가지 예외가 있다.
return, throw, yield, break, continue
이 키워드 뒤에 어떤 표현식을 쓴다면, 그 사이에 줄바꿈이 들어가서는 안된다.
++
와 --
연산자마찬가지로 적용할 표현식과 같은행에 써야한다.
=>
는 반드시 매개변수 리스트와 같은 행에 있어야 한다.