생각 & 리뷰

이펙티브 자바스크립트

빅디 2023. 10. 22. 15:48
728x90

이펙티브 자바스크립트, 업무상 JS를 활용하다 보니 깊이를 더해보고 싶어 읽어보았다.

 


▪️ 업무를 포함한 루틴에 익숙해지다보면, 어느샌가 사고가 경직되고 시야가 좁아진 듯한 기분이 든다. 그러던 중 <이펙티브 자바> 를 읽게 되었고, 나에게는 다소 어려운 내용이었지만 새로운 감각이 활성화되는 기분이었다. 완독 후 아쉬운 마음에 다른 책들을 찾다보니, <이펙티브 시리즈> 가 있다는 걸 알게 되었다. 나의 경우에는 업무 중 JS를 비중 높게 사용하고 있어, 시리즈 중에서는 <이펙티브 자바스크립트>가 책 분량이 적어 만만히 보이기도 하고 '읽어 볼만 하겠다' 싶었다. 또한, 현재는 JS를 프론트엔드 부분에서만 활용하고 있지만 백엔드 분야에서도 활용할 가치가 높기 때문에 선택하게 되었다.

 

▪️  구성은 총 68개의 아이템(주제)으로 이루어져 있고 각 아이템 별로 짧고 읽기 좋은 글이 쓰여있다. 그 중 나는 네 가지의 아이템이 인상 깊었다.

아이템11 클로저에 익숙해져라.

function makeSandwich() {
    var magicIngredient = "peanut butter";
    function make(filling) {
        return magicIngredient + " and " + filling;
    }
    return make("jelly");
}
makeSandwich(); // "peanut butter and jelly"

- _!makeSandWich!_ 에서 선언된 변수는 _!make!_ 함수에서 참조 가능하다.

 아이템33 메서드를 프로토타입에 저장하라

- 클래스 선언 시 메서드를 내부 프로퍼티로 선언하게 될 경우 객체 생성 시 객체마다 메서드 프로퍼티가 정의되어, 비효율적이다.

- 클래스 _!prototype!_ 에 메서드를 정의하자.

아이템45 순서가 정해진 컬렉션에는 딕셔너리 대신 배열을 사용하라.

- 딕셔너리 형태를 사용하면서 순서를 보장해야 되는 경우가 더러 있어, 고민을 해 본 적이 있었는데, 생성된 딕셔너리를 순서대로 배열에 넣어 관리하게 되면 해결할 수 있다.

아이템57 배열과 유사 배열 객체를 구별하라

- 유사 배열 객체는 키(Key)가 배열의 인덱스처럼 되어 있어, 배열처럼 보이는 객체를 말한다.

- 배열에서 사용되는 메서드들은 사용할 수 없다. _!forEach, map, filter!_ 등

- 브라우저에서 관리하는 _!FileList!_ 의 경우에도 유사 배열 객체인데 _!Array.from()!_ 으로 배열로 바꿔줄 수 있다.

 

▪️  책과 관련된 자료를 검색하다 보니 알게 된 건데, 이 책보다는 <이펙티브 타입스크립트>가 대세인 것 같다. 이 책을 선택하는 것도 좋지만 생략하고 <이펙티브 타입스크립트> 를 바로 읽어보는 것도 좋아보인다!