30일 (2022.01.27 5시간 40분)

roadzmoon76·2022년 1월 27일
0

매일 공부

목록 보기
31/217

프로그래머스 알고리즘 LV.1 - 하샤드 수

https://programmers.co.kr/learn/courses/30/lessons/12947

  • 처음에 잘못 작성한 코드
function solution(x) {
    var answer = true;
    let sum = 0;
    for (let i = 0; i < String(x).length; i++) {
        sum += String(x);
    }
    if (sum % x !== 0) {
        answer = false;
    }
    return answer;
}
  1. 5번줄 sum += String(x); 에서 그 숫자의 각각의 자릿수를 더해줘야하는데 [i] 인덱스 정보 넣는걸 깜빡했다. 또 숫자를 합치려면 스트링으로써 합치는게 아니라 다시 number로 형변환을 해줘야했다.
  2. 7번줄 if 조건문에서 하샤드 수의 정의는 정수 x를 x의 자릿수 합으로 나눠주는 건데 반대로 적었다
  • 정정후 코드
function solution(x) {
    var answer = true;
    let sum = 0;
    for (let i = 0; i < String(x).length; i++) {
        sum += Number(String(x)[i]);
    }
    if (x % sum !== 0) {
        answer = false;
    }
    return answer;
}

코어자바스크립트(80~122)

  • call / apply 메서드의 활용
  1. 배열의 구조와 유사한 객체(유사배열객체)에 call 또는 apply 메서드를 이용해 배열 메서드를 차용할 수 있다.
  2. 생성자 내부에서 다른 생성자를 호출
  3. 여러 인수를 묶어 하나의 배열로 전달(apply 활용)
  • ES6에 새로 도입된 화살표 함수는 실행 컨텍스트 생성 시 this를 바인딩하는 과정이 제외됨. 즉 이 함수 내부엔 this가 아예 없으며, 접근하고자 하면 스코프체인상 가장 가까운 this에 접근함.

  • 상위 컨텍스트의 this를 내부함수나 콜백 함수에 전달하기

  1. call사용시 함수 innerFunc 호출시 innerFunc.call(this);
  2. bind사용시 함수 선언시 }뒤에 }.bind(this); 해주고 그 함수이름 호출
  • 별도의 인자로 this를 받는 경우(콜백 함수 내에서의 this)
    콜백 함수를 인자로 받는 메서드 중 일부는 추가로 this로 지정할 객체(thisArg)를 인자로 지정할 수 있는 경우가 있음(MDN문서에서 확인가능).
    이런 형태는 여러 내부 요소에 대해 같은 동작을 반복하는 배열 메서드에 많이 있음.
    ex(Array에서의 forEach, map, filter, some, every, find, findIndex, flatMap, from
    Set에서의 forEach
    Map에서의 forEach) > Set과 Map은 cs6에서 새로 등장한 Method

  • 콜백 함수 내부의 this에 다른 값을 바인딩을 쉽게 하기위해 ES5에서 bind메서드를 이용하는 방법이 생겼다.

  • 클로저란 어떤 함수 A에서 선언한 변수 a를 참조하는 내부함수 B를 외부로 전달할 경우 A의 실행 컨텍스트가 종료된 이후에도 변수 a가 사라지지 않는 현상

코딩앙마 유튜브 인강

코어자바스크립트 읽다가 클로저부분 이해가 힘들어서 보게됨
기초강좌 7강까지 봄

profile
크론병걸린 자퇴생, 개발자되기

0개의 댓글