inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바스크립트 중고급: 엔진 핵심

1. 재귀 함수, 프로퍼티 연동 방지, 재귀 함수 형태, [정리 시간]

[정리 시간] 작성해보았습니다.

330

이하영

작성한 질문수 16

2

선생님 안녕하세요. 항상 감사드립니다!

[정리 시간]의 내용을 작성해보았는데 어렵네요...ㅜㅜ 가독성 좋고 효율적인 코드를 짜보고 싶은데 맘처럼 쉽지 않은 것 같습니다...ㅎㅎ 

javascript

답변 2

0

김영보

좋습니다.^^

0

김영보

전반적으로 좋습니다. 주석도 좋고 이름의 시맨틱도 좋습니다. 
그런데 for (var type in param) {...}의 코드가 너무 길어서 가독성이 떨어집니다. 함수로 분리해서 코드를 쭉~ 내려가면서 읽을 수 있도록 해주세요.

다음에는 내가 코드를 실행해 볼 수 있도록 이미지가 아닌 코드를 작성해주세요. 라인 간격이 커서 그런 것 같은데요, Shift + Enter로 라인을 분리하면 간격이 좁습니다.

0

이하영

확인 감사드립니다!

아래와 같이 함수를 분리해봤는데 맞을까요~?

var member = {
  Jan: { item: { title: 'JS북', amount: 100 }, point: [10, 20, 30] },
  Feb: { item: { title: 'JS북', amount: 200 }, point: [40, 50, 60] },
};
//배열의 값을 누적할 변수 설정
var result = 0;

//reduce 메소드에서 사용할 콜백 함수
function reduceCallback(prev, curr) {
  return prev + curr;
}
function show(param) {
  for (var type in param) {
    if (typeof param[type] === 'object') {
      ifArray(param[type]);
    } else {
      console.log(type, param[type]);
    }
  }
}
//param[type]이 배열인지를 확인하는 함수
function ifArray(paramArray) {
  if (Array.isArray(paramArray)) {
    console.log(paramArray);
    result = paramArray.reduce(reduceCallback) + result;
  } else {
    show(paramArray);
  }
}

show(member);
//누적한 배열의 값을 출력
console.log(result);

getBook 실습 예제중 질문드립니다!

0

433

1

__proto__ 에 대해 질문드립니다

0

325

1

호이스팅 코딩시간 풀이

0

372

1

[코딩 시간] JS {name: value} 이해

0

347

1

[[Scope]] 와 [[Environment]]는 같은 개념인가요

0

349

0

slice

0

243

0

스코프가 뭔가요?

0

313

0

어려워요

0

260

0

강사님 변수이름에 get을 붙이는 이유를 알고싶습니다.

0

349

1

[정리 시간] 정확하게 이해했는지 확인 부탁드립니다.

0

308

0

스코프 질문

0

258

1

fn 함수와 book.get 함수 차이 질문드립니다...ㅠㅠㅠ

1

553

1

this binding 논리 질문입니다.

0

287

1

파라미터 값을 매핑할 때

0

256

0

ES6부터는 this 바인딩을 환경 레코드에서 참조한다고 들었습니다.

0

212

0

정리시간 입니다.

0

230

0

정리시간입니다.

6

277

0

정리 시간 입니다.

0

208

0

정리시간입니다.

6

234

0

코딩시간 입니다.

1

230

0

선생님 스코프 질문이 있습니다.

1

245

0

[정리시간] 해보았습니다!

0

183

0

선생님 질문있습니다!!

0

162

0

질문드려도 될까요 선생님..

0

221

0