2020년 8월 17일 TIL

paulkim·2020년 8월 17일
0

TIL

목록 보기
1/11

Lodash

  1. Lodash는 개발자 John-David Dalton에 의해 개발 된 바닐라 JavaScript 라이브러리로 성능에 중점을 두고있는 utility 형 라이브러리다.

  2. 복잡한 데이터를 조작하거나, 코드를 모듈화 및 재사용 (React 등에서 작업한 후 해당 코드를 다른 곳에서도 쓰고 싶을 때) 을 위해 쓰일 수 있다.

    npm install --save lodash // 로대쉬를 설치한다.
    let _ = window._; // 로대쉬를 엑세스한다.
    <script src="https://cdn.jsdelivr.net/npm/lodash@4.17.15/lodash.min.js">
    </script> //CDN 으로 로대쉬를 불러온다
  3. Use Case: 예를 들어 불러온 객체 안에 저장된 값이 없는지 확인한다고 가정 해보자.

    function isEmpty(obj) {
      for (let prop in obj) {
        if (obj.hasOwnProperty(prop)) {
          return false;
        }
      }
      return JSON.stringify(obj) === JSON.stringify({});
    }

    객체가 비어있는 지 (empty) 확인하기 위해서 Vanila JavaScript 를 쓴다면, 상기처럼 코드를 작성해야 하지만;

    _.isEmpty(obj);

    Lodash 는 위의 코드 한줄로 끝난다.

    같은 맥락으로 만약 객체 안에 특정한 key 가 존재하는지 확인하려면

    let album = {title: 'Jack'O lantern', artist: "Jim John"}
    _.has(album, 'artist'); // 검색할 경로(객체), 검색값

    역시 한 줄 만으로 간단한 해결이 가능하다.

    Verdict: 물론 underlying 코드에 대한 이해를 동반해야 더 좋은 코드를 쓸 수 있겠지만, 매우 유용한 라이브러리 임에는 분명하다. 다른 수 많은 라이브러리 들과 달리 성능에 초점을 맞췄으며, 비슷한 유틸리티 라이브러리인 underscore.js 에 비해서 더 큰 커뮤니티를 갖고 있다는 것도 주목해 볼만한 점이다.

Recursion (재귀) Part. I

  1. Recursion 는 하나의 프로그래밍 패턴이다. 이를 JavaScript 에 한정하여 이야기 하자면, 특정 조건 값에 충족할 때 까지 반복적으로 하나의 함수를 호출하는 것이다.

  2. 이때 조건 값은 base 라고 하며 함수를 재 호출 하는 영역은 recursive 다.

  3. Recursion은 task 가 같은 종류 이면서, 여러번 반복 작업을 할 때 유용하다.

  4. 가령 Math.pow 를 재귀로 구현 해본다고 가정하자:

    const pow = (base, exponent) => {
    	if (exponent == 1) { // base 영역이다.
    		return base; // 제곱근이 그 자신이 되므로 더 이상 함수를 재호출 하지 않아도 된다. 
    	} else {
    		return base * pow(base, exponent-1);
    	}
    }; 
    
    console.log(pow(3, 3)); // 27 

    해당 함수를 손으로 수동으로 디버깅 해보자:

    pow = (3, 3) ⇒ 3 *

    pow(3, 2) ⇒ 3*

    pow(3, 1) ⇒ 3 // exponent 가 1이 되었으므로 함수를 리턴하고 빠져 나온다.

    이후 스택이 호출 되며 역방향으로 스택이 실행 되며, 내부 함수 부터 3, 3, 3 을 각각 리턴해주고 서로를 곱 해줘서 나온 답이 27 이다.

0개의 댓글