inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바스크립트 비기너: 튼튼한 기본 만들기

3. 콜백 함수를 가진 Array 메소드, forEach()

this 질문

300

이고은

작성한 질문수 17

1

안녕하세요 선생님!

forEach()매소드에서 설명해주신 this에 대해 더 설명 해주실 수 있으실까요? 구글링도 해보았는데 더 헷갈리네요ㅠ

"this는 함수 내에서 전역변수의 값에 접근할 때 사용한다" 이렇게 이해하면 되는건가요?

var list = [1,2];

var fn = function(el, index, all){

    console.log(el + this.ten);

};

list.forEach(fn, {ten : 10});

javascript oop

답변 6

0

김영보

디버거와 관계없어요. 강좌의 환경 설정을 참조하세요. 이제 얼마 안 남았으니 화이팅하고요. 끝나면 중고급 가기 전에 지금처럼 코딩하면서 다시 전체를 들으면서 정리하기 바랍니다.  기본이 중요하며 비기너 과정에 기본이 거의 담겨 있어요. 여기서 정리안되면 다음은 외우게 되는데요, 이건 아닌거죠^^

0

이고은

네, 답변 감사합니다! 함수에 대한 이해가 부족해서 이런 궁금증이 발생되는 거군요ㅜㅜ 강좌 들으면서 더 이해하도록 하겠습니다. (그리고 앞서 보여드린 스크립트에는 디버거가 빠져있지만 디버거때문에 onload를 사용하였습니다..!)

0

김영보

첫 줄에 onload를 사용하고 있는데요, 강좌에서 defer를 사용하라고 했어요. 물론 onload를 사용해도 문제는 없지만...

0

김영보

콜백 함수를 가진 함수들의 기본을 이해하지 못하는 느낌이 듭니다. 강좌를 다시 듣고 코딩하고 디버거 걸어 따라가면서 감을 잡기 바랍니다. 질문의 답은 어렵지 않으나 질문보다 더 중요한 것을 놓치게 될 것 같네요. 

0

이고은

답변 감사합니다. 어느정도 감은 오지만 중고급강좌에서 더 확실하게 배워야 할 거 같네요 :)

그리고  foreach문에 대해 여쭤보고자 합니다.

window.onload = function(){

var value = [1,2,3,4,5];

var fn = function(prev, curr, index, al){

console.log(prev + "," + curr);

return prev + curr;

}

var result = value.reduce(fn);

console.log("결과: ", result);

}

reduce()에서 return으로 반환된 값은 result에 할당되어야 되지 않나요?

왜 반환값이 첫번째 파라미터 값으로 넘어가게 되나요? 그냥 reduce()매소드의 정해진 규칙이라고 보면 될까요?

0

김영보

답장이 늦어 미안합니다.
this을 자세하게 설명하려면 사전 설명이 필요합니다. this는 현재 듣는 정도로 마무리하고, 다음 강좌인 "자바스크립트 중고급" 과정에서 논리적으로 접근하고 있으니 자세한 것은 그 강좌를 들으면 될 것 같아요. 위에 작성한 코드에 대해서만 답글을 작성하려고 합니다.

this는 오브젝트, 인스턴스, 호출한 함수 앞에 작성한 오브젝트를 함수에서 참조합니다.
아래 코드에서 show() 함수에서 this가 point 오브젝트를 참조합니다.
var point = {
  bonus: 100,
  show: function(value){
     // this. point.bonus를 참조합니다.
    // 100 + 200을 하게 되어 300이 출력됩니다.
    web.log(this.bonus + value);
  }
};
point.show(200);

------------------------

"this는 함수 내에서 전역변수의 값에 접근할 때 사용한다" 이렇게 이해하면 되는건가요?
==> 아래는 글로벌 변수를 참조하는 형태입니다.

var value = 500;
function getValue(){
  // getValue()를 호출하면서 함수 앞에 오브젝트를 작성하지 않으면
  // 함수 안에서 this가 글로벌 오브젝트를 참조합니다. 
  // value 변수가 글로벌 오브젝트에 있으므로 this.value로 값을 구할 수 있습니다.
  // "use strict"를 선언하고 함수 앞에 오브젝트를 작성하지 않으면 에러가 발생합니다. 
  return this.value;
};
console.log(getValue());

프론트엔드 부트캠프 가기 전, 짧은 감사 인사드립니다!

2

109

2

섹션10 3. Object 프리미티브 값 구하기에서 질문있습니다.

1

148

2

섹션3의 1강 연산자, 표현식 강의에서 표현식 질문이 있습니다.

0

140

2

섹션 1. 6번째 강의 질문입니다.

1

247

1

선생님 Objcet 질문 있습니다.

0

299

2

forEach문을 활용한 코딩시간 풀이

0

616

1

sort 코딩 시간 풀이

0

292

1

코딩 시간 풀이 올려봅니다.

0

229

1

인덱스 코딩시간 문제풀이

0

382

1

for문 코딩 시간 답제출

0

307

1

3:39 sort에 들어가서 one,two 파라미터질문입니다.

0

194

0

퀴즈 질문 및 정답

0

356

1

오브젝트

0

283

1

인스턴스 목적

1

239

1

[코딩시간 01] 3항 연산자로 작성했을 때, 각 값..?

0

269

1

Undefined === Null; // true???

0

194

1

indexOf의 파라미터에 음수를 작성 했을때에 대한 질문입니다.

0

1031

5

length 값 변환 논리에 대한 질문입니다.

0

211

1

상수 변수 선언에 대해

0

235

1

코딩 시간 (for문) 풀이

0

255

1

Object vs object

1

501

1

코딩 시간 풀이입니다.

0

197

1

log(add(1, 2, 3, 4));

0

180

1

코딩시간 답 제출

0

198

1