this를 다시 정의한다.

null·2022년 8월 4일
0

this란.
자신이 속한 객체를 가르키는 자기 참조 변수입니다.
자바스크립트에서 this는 함수 호출 방식에 따라 달라지는데요.
일반 함수의 경우 this는 전역 객체에 바인딩 되고
메소드로 호출 될 경우엔 해당 메소드를 소유하고 있는 객체를 가르킨다.
단 화살표 함수는 다른데요.
화살표 함수는 this 자체를 가지고 있지 않습니다. 때문에 화살표 함수는 무조건 this는 전역 객체에 바인딩 된다.

함수를 호출하는 방법.
함수 아니면 메서드. 이 둘의 차이는 독립성.
독립적인 기능을 수행하는 함수와 달리 메서도는 자신을 호출한 대상 객체 관한 동작만 수행한다.

메서드 앞에는 .이 있다. 호출 주체 그 객체가 this가 된다.

방금 말한 내부함수, 콜백함수 생성자.. 어쩌고 저쩌고 규칙에 상관없이 this 바인딩이 가능한 것. apply call bind
call apply는 메서드의 호출 주체인 함수를 즉시 실행하도록 한다.
첫번째 인수로는 this를 바인딩 하고 이후 인자들 호출할 함수의 매개 변수를 넣는다.
함수를 그냥 실행하면 전역객체를 참조하겠지만, 임의의 객체를 this로 지정 가능하지.
call apply 차이. apply는 배열로 받는다 .
Bind 같은 경우는 즉시 호출하지 않고 넘겨받은 this랑 인자를 바탕으로 새로운 함수를 반환한다.

콜백함수.
함수 a가 자신의 제어권을 함수b에게 넘겨준다면 함수a는 콜백함수다.
콜백함수도 함수니까 전역객체를 바인딩 하겠지만. 제어권을 받은 함수에서 별도로 this를 지정한다면 그 대상을 참조한다.

콜백함수는 이벤트처리나 서버통신처럼 비동기전인 작업을 수행하려고 등장했는데. 요즘엔 웹 복잡도가 워낙 높아지면서 이런 처리할 일이 많아지고.
비동기 작업 = 함수 호출. 이 함수 호출 시점에 다음 작업(콜백 함수)도 넘겨줘야 하고.. 가독성 수정.. 너무 어려워짐..

그렇게 나온 것이 promise.
promise 객체를 통해서 바로 비동기 작업을 시작할 수 있다.
promise의 경우 크게 선언과 실행으로 나눌 수 있다.
promise는 지금 당장은 아닌데 이따 하게 되면 알려줄게~ 라는 약속 선언이다. 그렇게 때문에 어떤 상태인지가 중요한다.
Promise는 세 가지 상태를 지닌다.
대기(pending), 이행(fulfilled), 거부(rejected)인데
성공으로 간주하고 싶다면 resolve함수 호출, 실패라 간주하고 싶다면 reject 함수 호출.

promise는 실행에 대해 후속조치를 지정할 수 있다.
then, catch 메소드를 통해서 성공하면 뭘할지 실패하면 뭘할지. 작업 이후 동작을 지정해줄 수 있다.

async await
함수 앞에 async를 써준다.
함수 내부에 promise를 반환하는 비동기 처리 함수 앞에 await함수를 넣어준다.
그리고 fulfilled이든 reject이든 일단 기다려! await.함수가 있음.
await 은 Promise 가 resolve 한 값을 뱉는다.
해당 Promise 에서 reject 가 발생한다면 예외가 발생.
이 예외 처리를 하기 위해 try-catch 구문을 사용한다.

참고: https://elvanov.com/2597

profile
개발이 싫어.

0개의 댓글