ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • You Don't Know JS Yet - 자바스크립트 개념, 스코프와 클로저
    2024. 2. 25. comments

    최근 함께 일하는 동료와 가볍게 JavaScript 주제로 이야기를 했었다. 기억나는 내용 중 하나는 JavaScript 개발자 면접관으로써 생각보다 숙력자를 찾기 어렵다는 것이다. JavaScript는 과거 웹 브라우저에서 동작시키기 위한 스크립트 언어였지만 이제는 서버뿐 아니라 앱 또는 GUI 개발까지 다양하게 활용되고 있다. 

    https://innovationgraph.github.com/global-metrics/programming-languages#programming-languages-rankings

    github 플랫폼에 가장 많이 등록되어 활용되는 개발언어이기도 하고 각종 리포트의 항상 상위권 인기에 머무르는게 이 언어이다. 같이 일하던 동료가 말하는 숙련자란 Javascipt를 잘 이해하고 서버 개발에 활용할 수 있는 사람을 말한다. 

    그러한 관점에서 나 또한 비슷한 사람에 속한다. 오랫동안 다뤄왔지만 JavaScript 내부 동작에 대해 고민해보거나 개발 언어 특성에 맞게 코드를 작성하려는 노력을 굳이 하지 않았다. 누군가 좋은 패턴이라고 하면 수용적인 태도로 고개를 끄덕거리며 비슷하게 코드를 작성하기 위해 시간을 들였던 기억만 남는다. 쉬우면서도 어려운 언어 그리고 오래동안 사용했지만 자신있게 잘 사용할줄 안다고 하기 어려운 개발 언어가 JavaScript이다. 

    You Dont' Know JS는 JavaScript을 알지만/잘 알지 못하는 개발자들을 위한 필독서라고 할 수 있다. 이 책의 강점이라고 할수 있는데, 내부 동작방식에 대해 정말 짧은 예시 코드들을 가지고 설명을 풀어나간다는 점이다. 

    짧은 예시 코드들은 복잡하지 않기 때문에 독자의 이해를 돕기도 하지만, 한번에 이해되지 않는 상황에도 부담을 줄여주어 여러번 반복해서 읽어볼 수 있게 해준다.

    사실 YDKJSY(You Don't Know JS Yet)시리즈는 6개의 챕터로 이루어져 있는데, 이번 책은 첫번째 자바스크립트 개념과 두번째 스코프와 클로저를 엮어서 만든 것이다.

    1. 시작하기 (자바스크립트 개념)
    2. 스코프와 클로저
    3. 객체와 클래스
    4. 타입과 문법
    5. 동기와 비동기
    6. ES.Next와 그 너머 

    기억나는 몇몇 내용들을 요약하자면

    • JavaScript는 ECMAScript의 스펙을 지원하는 개발언어이며, 하위호환을 존중하는 언어이다.
    • 렉시컬 스코프 스펙을 지원하기 위해 구문 분석과 같은 컴파일이 필요하고 실제 동작은 인터프린터 방식을 취한다. 
    • function에 대한 일급 객체를 지원한다.
    • (class 문법을 추후 지원했지만) 클로저, 프로토타입을 활용하여 function을 추상화 및 캡슐화하였고 상속 개념처럼 활용할 수 있도록 발전해왔다.
    • 간략한 코드 예시를 통한 스코프와 클로저의 수많은 개념 설명들

    저자는 초반에 중급자를 위한 책이라고 밝히는데 사실 JavaScript를 막 시작한 개발자가 아니라면 크게 무리가 없다고 생각한다. 중요한 점은 다른 개발 언어를 다뤄봄으로써 JavaScript의 철학을 이해하고 비교할 수 있는지가 중요한데 Java, Python, C/C++, Golang등 어떤 것이든 상관이 없다고 생각한다. Java에서는 클로저를 지원하진 않지만 함수형 인터페이스를 통해 함수를 전달받고 응답할 수 있는 수준까지 제공하고 있으며 Python에서는 클로저를 지원하며 이를 활용하여 decorator 기능을 언어차원에서 제공하기도 하였다. 또한 golang에서도 클로저를 직접 지원한다.

    스코프는 여전히 헷갈리지만 클로저 부분은 꽤 재미있게 읽었다. 

    여러 사람들과 같이 읽으면 더 좋은 책이라고 생각한다. 각자 갖고 있는 지식이나 경험을 기반으로 비교하며 장단점에 대해서 토론할수 있기 때문이다. 

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

    반응형

    댓글

Designed by Tistory.