자바스크립트 문법/중고급(비동기_프라미스_this)

this, 콜백 ::: 코어 자바 스크립트

자무카 2022. 10. 20.

1

2

3

 

코어 p.73 this

var obj1 = { // 1) 객체 생성: obj1 안에 outer 익명 함수 프로퍼티
   outer: function() { // 3) obj1.outer() 함수의 실행 컨텍스트 생성->호이스팅. obj1로 this 바인딩
      console.log(this); // 4) this 는 obj1

      var innerFunc = function() { // 5) innerFunc 는 지역변수.outer스코프에서만 접근
         console.log(this); // 전역 or obj2 
      }
      innerFunc();  // 6) 일반함수로 직접 호출("." 이 없다.) this 는 전역

      var obj2 = {
         innerMethod: innerFunc 
      };
      obj2.innerMethod(); // innerFunc의 this는 obj2
   }
};

obj1.outer(); // 2)


p. 95 일반 함수를 콜백 함수로!  함수 안의 함수(콜백함수)가 되는 것. -> 전역 객체

// 특정 조건일 때, (콜백)함수를 실행해서 알려달라.
// 자신(콜백함수)을 다른 코드의 인자로 넘겨주면서 제어권 위임.
var count = 0;
var timer = setInterval(function () { // setInterval 이 콜백함수 호출
   console.log(count);
   // console.log(timer);
   if (++count > 4) clearInterval(timer);
}, 300);

// 1) 일반 함수
var count = 0;
var cbFunc = function () {
   console.log(count);
};
cbFunc();


2) cbFunc를 (setInterval)을 이용해서, 콜백 함수로 사용하기

// 반복이 있으니, 변수로 증감 카운트 만들기
var count = 0;
var cbFunc = function () {
   console.log(++count);
};
setInterval(cbFunc, 1000);

// 3) 특정 조건(횟수) 후, 정지 시키기
var count = 0;
var cbFunc = function(){
   console.log(++count)
   if (count > 4) clearInterval(timer)
};


3) 콜백 함수를 중지 시키려면?

// 콜백 함수를 호출한 코드를 변수(timer)에 담아서, clearInterval() 
var count = 0;
var cbFunc = function () {
   console.log(count);
   if (++count>4) clearInterval(timer);
};
var timer = setInterval(cbFunc, 1000);

'자바스크립트 문법 > 중고급(비동기_프라미스_this)' 카테고리의 다른 글

제너레이터  (0) 2022.10.31
비동기 promise, async/await (생활코딩)  (0) 2022.10.28
24장 클로저  (0) 2022.09.30
22장 this  (0) 2022.09.30

댓글