inflearn logo
강의

Course

Instructor

Intermediate-Advanced JavaScript: Engine Core

1. Recursive functions, property linkage prevention, recursive function form, [cleanup time]

정리시간 입니다.

228

buriburi

10 asked

0

var book = {
member: {name: 100},
point: {value: 200}
};
function show(param){
for (var type in param){
typeof param[type] === "object" ? show(param[type]) : console.log(type + ":", param[type]);}
};
show(book);
// name: 100
// value: 200
```

1. show(book);
- 마지막 줄에서 show(book)를 호출하면서
- book 오브젝트를 파라미터 값으로 넘겨줍니다.
2. for (var type in param){...}
- for-in으로 파라미터로 받은 오브젝트 전개
3. typeof paam\[type] === "object" ? show(param\[type]) : console.log(type + ":", param\[type]);
4. param\[type] 타입이 "object" 이면
- show()를 호출
- 자신을 호출하면서 param\[type]을 넘겨줍니다.
- book\["member"]이므로 {name: 100}이 넘어 갑니다.
5. param\[type] 타입이 "object"가 아니면
- member: {name: 100}에서 {name: 100}을 읽은 것이므로 값을 출력합니다.

---

### \[정리시간\]

```javascript
debugger;

// 주어진 데이터
var member = {
Jan: {item: {title: "JS", amount: 100}, point: [10, 20, 30]},
Feb: {item: {title: "JS", amount: 200}, point: [40, 50, 60]}
};

// 배열이면 누적되는 값이 저장되는 변수 선언
// 계산을 해야하므로 단순히 선언만 하는 것이 아니라 초깃값으로 0을 할당해줬음
var result = 0;

// 배열의 엘리먼트를 더해 누적하게 만드는 reduce의 콜백 함수
function callback(prev, curr){
return prev + curr;
};

// 메인 함수 선언
function show(param){
// 파라미터로 오는 데이터가 오브젝트 형태여서 for-in문 활용
for (var type in param) {
// Array이면
if (Array.isArray(param[type]) === true){
// 배열의 값을 출력하고
console.log(param[type]);
// result에 배열의 값들을 누적합니다.
result += param[type].reduce(callback);
// 배열이 아닌 object이면
} else if (typeof param[type] === 'object') {
// 프로퍼티 이름과 값을 출력하고
console.log(type,":",param[type]);
// 재귀 호출을 통해 데이터를 끝까지 탐색
show(param[type]);
// 가장 안에있는 오브젝트의 프로퍼티 이름과 값을 출력
} else {
console.log(type,":",param[type]);
}
};
};

// 재귀 함수 호출
show(member);
// 누적한 값 출력
console.log(result);

javascript

Answer 0

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

0

419

1

__proto__ 에 대해 질문드립니다

0

315

1

호이스팅 코딩시간 풀이

0

358

1

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

0

340

1

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

0

345

0

slice

0

239

0

스코프가 뭔가요?

0

307

0

어려워요

0

255

0

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

0

339

1

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

0

300

0

스코프 질문

0

253

1

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

1

542

1

this binding 논리 질문입니다.

0

279

1

파라미터 값을 매핑할 때

0

251

0

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

0

209

0

정리시간입니다.

6

269

0

정리 시간 입니다.

0

203

0

정리시간입니다.

6

227

0

코딩시간 입니다.

1

222

0

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

1

240

0

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

0

175

0

선생님 질문있습니다!!

0

159

0

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

0

217

0

엔진이 식별자 해결을 위해서 스코프를 사용한다고 하셨는데

0

185

0