자바스크립트 교과서 - 2. 어휘 구조

Seoyong Lee·2023년 10월 1일
0

개발 공부

목록 보기
4/21
post-thumbnail

다음 책들과 MDN의 내용을 모아 자바스크립트 핵심 위주로 정리해 보았습니다. 여러 권의 책을 한 글로 훑어볼 수 있도록 최대한 간결하게 정리하겠습니다.

모던 자바스크립트 Deep Dive - 이웅모
You Don’t Know JS - Kyle Simson
자바스크립트는 왜 그 모양일까?(How JavaScript Works) - Douglas Crockford
자바스크립트 완벽 가이드(JavaScript: The Definitive Guide 7/E) - David Flanagan

구문과 의미

프로그래밍은 프로그래밍 언어를 사용해 컴퓨터에게 실행을 요구하는 일종의 커뮤니케이션이다. 프로그래밍 언어는 구문(Syntax)과 의미(Semantics)의 조합으로 표현된다.

이웅모 , 『모던 자바스크립트 Deep Dive』, 위키북스(2020), p4.

  • 프로그래밍의 목적은 요구사항을 분석해서 의미 있는(Semantic) 프로그래밍 언어의 문법(Syntax)으로 표현, 문제를 해결하는 것이다

  • 문법적으로는 문제가 없지만, 의미는 없는 코드를 작성하지 않도록 주의하자

    const number = "string" // 작동에는 문제가 없지만 협업에는 문제가 될 수 있다.

주석

  • 자바스크립트는 다음의 두 가지 주석 스타일을 지원한다
// 한 줄 주석

/* 
 * 여러 줄 주석
 * 여러 줄 주석
 */

나쁜 코드에 주석을 달지 마라. 새로 짜라.
- 브라이언 W. 커니핸, P.J.플라우거

로버트 C. 마틴, 『Clean Code 클린 코드』, 인사이트(2013), p68.

  • 클린코드에선 주석은 불필요한 정보를 담거나 업데이트되지 않는 경우 오히려 읽는 사람을 헷갈리게 할 수 있으므로 꼭 필요한 용도로 적당히 사용하는 것을 강조한다.
  • 주석 없이도 코드의 의도를 잘 표현할 수 있도록 직관적이고 간결한 코드를 작성하는 연습을 해보자.

리터럴(literal)

  • 리터럴은 프로그램 안에 직접 쓴 데이터 값이다.
  • 다음은 모두 리터럴이다.
12
1.2
"hello world"
true

식별자(Indentifiers)

  • 식별자는 어떤 값을 식별할 수 있는 고유한 이름으로 실제로는 메모리 주소를 기억하고 있다.
  • 값은 메모리 공간에 저장되어 있으며 메모리 주소(ex 0x0669F913)는 식별자와 매핑 관계를 맺는다.
  • 일반적으로 문자열과 식별자는 서로 다르다.

식별자는 코드의 일부이지만 문자열은 데이터이기 때문에, 식별자와 문자열은 다릅니다. JavaScript에서 식별자를 문자열로 변환하는 방법은 없지만, 어떤 경우 문자열을 분석해 식별자로 사용할 수 있습니다.
mdn, 식별자


예약어(Reserved words)

  • 다음과 같은 예약어는 예약된 키워드이므로 상수, 변수, 함수, 클래스의 이름으로 사용할 수 없다.
as
const 
export
null
void 
async
if
while
await
...

예약어를 사용하는 것은 메모리가 부족하던 1950년대와 1960년대에서부터 비롯된 잘못된 기능 중 하나입니다. …불안정한 예약어 전략은 언어에 새로운 기능을 깔끔하고 직관적으로 추가하기 어렵게 만들기 때문에, 언어 설계자에게도 좋지 않습니다. 다음 세대 언어에서는 예약어를 사용하지 않았으면 합니다.

더글러스 크락포드, 『자바스크립트는 왜 그 모양일까?』, 인사이트(2020), p12.

  • 예약어는 적폐일까? 더글러스 크락포드와 같이 앞으로 만들어질 새로운 언어에서는 점차 사용을 줄여야 한다는 의견도 존재한다.

세미콜론

  • 자바스크립트는 문장의 끝을 표시하기 위해 세미콜론(;)을 사용한다.

다른 프로그래밍 언어와 마찬가지로 자바스크립트 역시 세미콜론(;)을 사용해 문을 구분합니다. …세미콜론이 반드시 필요하지 않은 경우라도 세미콜론을 써서 문이 끝났음을 명확히 표시하는 프로그래머가 많고, 이 책에서도 그 관습을 따릅니다. 반대로 세미콜론을 가능한 한 생략하며 꼭 필요한 때만 쓰는 사람도 있습니다.

데이비드 플래너건 , 『자바스크립트 완벽 가이드』, 인사이트(2022), p22.

  • 그러나 보통 Automatic semicolon insertion(ASI) 덕분에 실제 코드 작성에선 세미콜론을 크게 신경 쓰지 않는 경우가 많다.

to make the language more approachable and convenient, JavaScript is able to automatically insert semicolons when consuming the token stream, so that some invalid token sequences can be "fixed" to valid syntax. This step happens after the program text has been parsed to tokens according to the lexical grammar.

언어를 더욱 접근하기 쉽고 편리하게 만들기 위해 JavaScript는 토큰 스트림을 사용할 때 자동으로 세미콜론을 삽입하여 일부 유효하지 않은 토큰 시퀀스를 유효한 구문으로 "고정"할 수 있습니다. 이 단계는 프로그램 텍스트가 어휘 문법(lexical grammar)에 따라 토큰으로 구문 분석(parse)된 이후에 발생합니다.

mdn - Lexical grammar


References

데이비드 플래너건 , 『자바스크립트 완벽 가이드』, 인사이트(2022)
더글러스 크락포드 , 『자바스크립트는 왜 그 모양일까?』, 인사이트(2020)
카일 심슨 , 『You Don’t Know JS - 타입과 문법, 스코프와 클로저』, 한빛미디어(2017)
이웅모 , 『모던 자바스크립트 Deep Dive』, 위키북스(2020)
박연오님의 블로그 - 자바스크립트, 세미콜론을 써야 하나 말아야 하나
Feross Aboukhadijeh - Never Use Semicolons
mdn - Lexical grammar

0개의 댓글