메뉴 바로가기 검색 및 카테고리 바로가기

한빛미디어

독자리뷰

모호하고 애매한 자바스크립트 개념 길라잡이, 『You Dont Know JS Yet』 서평

teddyj***

|

2024-02-25

You Don’t Know JS Yet

당신은 아직 자바스크립트를 모른다! 더욱 깊이, 제대로 이해하는 자바스크립트 핵심 개념

  • 저자 : 카일 심슨
  • 번역 : 이보라
  • 출간 : 2024-01-12

안녕하세요. 현재 프론트엔드 개발자로 일하고 있어요. 개발 관련 정보를 얻기 위해 SNS를 자주 활용하다가, 최근에 한빛미디어에서 2024년 나는 리뷰어다 서평단을 모집하고 있다는 소식을 접하게 되었고 지원하였습니다.

 

항상 공부를 해야 하는 개발자로서의 책임을 느끼는 동시에, 이번 리뷰어로 선정된 것은 제가 평소에 개발 서적을 찾아 공부하는 것을 즐겨하는 사람으로서 자기 계발에 더 많은 시간과 노력을 기울일 수 있는 훌륭한 기회라고 생각합니다.

 

 

이번에 리뷰할 책은 'You Don't Know JS Yet'입니다. 프론트엔드 개발자로서 자바스크립트 언어는 뗄레야 뗄 수 없는 언어입니다. 그러나 평소 회사에서 코드를 작성하거나 개인 프로젝트를 할 때 언어에 대한 깊은 이해보다는 일단 작동되는지를 확인하고 결과에 집중했던 적이 많습니다. 코드를 작성한 방식이나 작동 원리에 대해서는 크게 신경쓰지 않았죠.

 

하지만 개발자로서 만족하지 않고, 코드가 어떻게 돌아가는지를 정확히 이해하고자 합니다. 이를 위해 자바스크립트 언어에 대한 더 깊은 이해가 필요하다고 느껴서 이번 리뷰에서 해당 책을 읽고 리뷰를 작성하게 되었습니다.

 

저는 책의 여러 파트 중 '자바스크립트 조망하기'를 읽고 리뷰를 작성해 보았습니다.

책을 읽으면서 제가 이미 알고 있던 자바스크립트에 대한 내용들을 다시 한번 되짚어 볼 수 있었습니다. 세세하게 읽어가며 책에서 제공하는 도움을 받으면서, 더 잘 이해할 수 있는 부분들도 있었습니다. 이제 이 부분들에 대해 간단히 소개해 보겠습니다.

 

null 과 undefined 에 대해

책에는 다음과 같이 설명하고 있습니다

'많은 개발자가 값의 결함이나 부재를 나타낼 때, null과 undefined를 구분 없이 사용하는 경향이 있습니다. 글자가 짧아서 null을 사용하는 것이 더 매력적으로 보일 수 있지만, 비어 있는 단일 값을 나타낼 때는 undefined를 사용하는 것이 가장 안전한 최선의 방법입니다.'

 

이 내용을 읽으면서 살짝 의문이 들었고, 아래에 있는 주석을 보니 책의 옮긴이가 의견이 다를 수 있다고 언급하고 GitHub 링크를 남겨 놓았습니다.

 

책의 주석 덕분에 스스로 디테일하고 능동적으로 null과 undefined를 비교적 학습해 볼 수 있었습니다. 변수가 비어 있거나 알 수 없는 상태를 나타내려면 null을 사용하고, undefined는 값이 할당되지 않은 변수의 초기값을 위해 예약어로 남겨두는 것이라는 것을 잘 이해할 수 있었습니다.

 

일치 비교, 동등 비교에서 === 가 만능이 아닌 이유

 

등호 세 개가 붙은 일치 연산자 ===는 이름만 봤을 때는 정확히 일치할 때에만 참을 반환하는 연산자인 것으로 추측됩니다. 그러나 여기에는 예외적인 상황이 있습니다. === 연산자가 특정한 값인 NaN이나 -0과 함께 사용될 경우에는 예상과 다르게 작동하는 것을 확인할 수 있습니다.

NaN을 비교할 때는 Number.isNaN()을 사용하고, -0을 비교할 때는 Object.is()를 사용하는 것이 좋다는 점을 알게 되었습니다. 어쨌든 결론은 === 연산자만으로는 모든 경우에 정확하게 비교할 수 없다는 것을 깨달았습니다.

 

강제 변환

 

강제 변환은 한 타입의 값이 다른 타입의 값으로 변환되는 것을 의미합니다. == 연산자는 === 연산자와 마찬가지로 피연산자의 타입을 비교하며, 피연산자가 같은 타입이면 ==와 ===는 완전히 동일하게 작동합니다.

 

하지만 피연산자의 타입이 다른 경우, == 연산자는 비교 이전에 강제로 타입을 맞추는 작업을 수행합니다. 책에서는 == 연산자를 '느슨한 동등 비교 연산자'가 아닌 '강제 변환 동등 비교 연산자'로 표현하는 것이 적절하다고 설명합니다.

 

따라서 == 대신 === 연산자만 사용하여 타입 강제 변환이 일어나지 않게 할 수 있지만, <, >, <=, >=와 같은 연산자도 있으며, 이들 연산자들도 피연산자의 타입이 다른 경우에는 타입 강제 변환이 먼저 이루어진다는 점을 알게 되었습니다.

 

리뷰를 마치며

 

책 전체를 읽고 이해하는 데에는 시간이 조금 더 필요할 것 같습니다. 그러나 자바스크립트를 사용하는 개발자로서 자바스크립트의 작동 원리를 파악하기 위해 이 책은 훌륭한 참고서라고 생각합니다. 새로운 라이브러리나 기술을 익히는 것도 중요하지만, 모든 것의 기초는 자바스크립트라는 본질에 충실한 학습이라고 생각합니다.

 

이러한 기초를 튼튼히 다지면 현재 유망한 프레임워크나 라이브러리가 사라져도 쉽게 이해하고 적용할 수 있을 것이라고 믿습니다. 책을 읽으면서 항상 이러한 기본에 대한 공부를 소홀히 하지 않고 꾸준히 학습해야 한다는 생각을 하게 되었습니다. 감사합니다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?