모던 자바스크립트 Deep Dive 회고 - 1주차

@장태근· September 09, 2024 · 4 min read

이 글은 『모던 자바스크립트 Deep Dive』 스터디 토론을 인터뷰 형식으로 정리한 글이다. 반지의 제왕 캐릭터로 비유했다.

목표

변수, 표현식과 문, 데이터 타입을 알아보자.

1 .세미콜론

글을 작성할 때 문장의 마무리로 마침표를 찍듯 세미콜론을 사용하는 언어가 많다. 하지만 자바스크립트(JavaScript)는 세미콜론이 선택 사항이다. 프로젝트에서 어떤 규칙을 사용할까.

Q. 어떤 규칙을 준수하나요?

간달프: 사용하는 것을 선호한다.

레골라스: 사내 컨벤션이 세미콜론을 사용하지 않는다. 문제가 발생했을 때 'Early Return 패턴1'을 사용해서 문제를 해결했다. 개인 프로젝트에는 세미콜론을 사용한다.

2. undefined vs. null

자바스크립트 엔진은 값을 초기화하지 않으면 undefined를 기본으로 할당한다. 따라서 의도적으로 빈 값을 넣을 때는 null을 주로 사용한다.

Q. 왜 undefined를 만들었을까?

프로도: 자바스크립트는 동적 언어다. 메모리 공간을 만들었지만(선언은 했지만) 값이 할당되지 않은 상태를 표현하기 위해 undefined를 만들지 않았을까?

3. 변수 선언하기: var

ES6 이전에는 var 키워드를 사용해서 변수를 선언했다. 하지만 let, const 키워드가 등장한 이후에는 코드를 작성할 때 var 키워드를 사용하지 않았다. var 키워드를 어떻게 바라보면 좋을까.

피핀: var 키워드는 아직도 라이브러리를 개발할 때 사용한다.

프로도: 아직도 사용할 수 있는 키워드고 문제는 아니다. 하지만 모두가 이해하고 사용하는 인지 비용이 높다고 생각한다. 그래서 가급적 var 키워드를 사용하지 않는다.

4. 부동소수점

부동소수점은 정산, 결제 등 돈과 관련된 모든 도메인에서 주로 이야기하는 주제다.

간달프: 자바(Java)에서는 BigDecimal 클래스를 사용해서 문제를 해결한다.

레골라스: 정책에 따라 다르게 처리한다. 중요한 점은 도메인을 이해해야 한다.

참고: 자세한 이야기는 부동소수점에서 알아보자.

5. 네이밍 컨벤션(Naming Convention)

프로도: 변수명은 camelCase, 클래스, 리액트(React) 컴포넌트는 PascalCase 등 다양하게 사용한다.

레골라스: 네이밍을 할 때 어려운 점과 참고하기 좋은 서적을 공유했다.

마치며

간단한 주제였지만 꽤 오랜 시간이 걸렸다. 그래도 다양한 사고가 확장되는 경험을 해서 좋았다. 추후에 스코프와 호이스팅을 배우면 더 깊은 대화를 할 수 있을 것 같아 기대된다.

  1. 『리팩터링』(마틴 파울러, 한빛미디어, 2020)

@장태근
개발자. 명료한 생각이 명료한 글이 된다.