게시글
질문&답변
2022.05.30
yield에 대해 질문이 있습니다.
저도 이 부분이 답변을 보고도 이해가 안되서 좀 더 공부해봤는데요. next() 메소드의 파라미터로 넘겨주는 인자 값이 제네레이터 함수 인자 값으로 들어가는게 아니라 yield 표현식을 할당받는 변수에 할당되는 게 핵심인 것 같네요. 즉 마지막 yield에서는 param 변수에 20이 할당되어서 30을 yield하는 거군요.
- 0
- 2
- 227
질문&답변
2022.05.26
틀린부분 질문드립니다
화살표 함수는 this를 가지고 있지 않아요. 대신 자기가 속한 스코프의 this를 참조하게 되는데요. 제 생각에는 여기서 화살표함수의 this가 글로벌 객체가 될 것 같은데 이렇게 파라미터로 넘겨줄 때는 어떻게 되는지는 잘 모르겠습니다. 하지만 어떤 경우든 this.plus는 확실히 undefined가 될거고 결과적으로 NaN이 나오게 되는 것 같습니다.
- 0
- 1
- 222
질문&답변
2022.03.18
인터페이스와 함수의 차이
저도 이 점이 많이 궁금해서 많이 생각해봤습니다ㅠㅠ 인터페이스 클래스를 보면서 타입 호환을 체크할때 할당하는 값(우항)의 타입이 할당받는 값(좌항)의 타입의 합집합 일때는 호환이 가능하다고 이해했습니다. 핸드북에서는 객체가 할당된 변수를 함수 파라미터에 인자로 넘기는데 이때도 객체의 구조가 파라미터 구조의 합집합이 되므로 호환이 가능합니다. 그런데 이 경우도 파라미터 a가 인터페이스로 정의한 타입을 가지므로 사실 인터페이스에서의 타입 호환과 같은 경우인 것 같습니다. 반면 강의 예제에서는 함수끼리 비교를 다루고 있는데 이 경우는 관점을 반대로 바꿔서 생각해야합니다. 파라미터 구조를 기준으로 sum은 add의 합집합이지만 호환이 불가능하고 반대의 경우는 호환이 되기 때문에 좌항의 값이 우항의 값의 합집합인지 부분집합인지 따져야할 것 같습니다. 제가 생각할때는 객체 프로퍼티와 함수의 파라미터라는 차이에서 오는 것 같습니다. 서로 타입이 다른 객체를 호환할 때에는 할당받는 쪽의 타입의 프로퍼티가 모자라도 아무 상관이 없습니다. 인터페이스를 정의할때 대상 객체의 프로퍼티의 일부만 정의해도 에러가 나지 않는 것 처럼요. 하지만 만약 인터페이스에서 어떤 프로퍼티를 정의를 했는데 실제 객체에는 없다면 그건 문제가 될겁니다. 하지만 함수끼리의 경우 (타입이 동일하다고 하고 파라미터 구조만 따졌을 때) 할당받는 쪽의 파라미터가 할당되는 쪽보다 모자라다면 할당되는 함수의 파라미터 일부는 제대로 인자 값을 받을 수 없을 겁니다. 할당받는 쪽에서는 할당되는 쪽에서 필요한 파라미터가 아예 없을테니까요 . 반대로 할당받는 함수의 파라미터 구조가 할당되는 함수의 파라미터 구조를 포함할 수 있다면 할당되는 함수는 아무 문제가 없을 겁니다. 즉 함수끼리의 호환에서는 인터페이스-객체의 경우와는 달리 할당되는 함수가 할당받는 쪽에서 정의한 것보다 실제 파라미터가 모자란 것은 상관없지만, 넘치는 것은 문제가 된다고 볼 수 있을 것 같습니다. 그리고 함수끼리의 경우에는 파라미터 뿐만아니라 리턴 값의 타입까지 체크하게 되네요. 사실 그냥 보면 당연한 것이긴 한데 질문을 읽고 생각해보니 많이 헷갈려서 나름대로 정리 해봤습니다. 저는 이렇게 이해를 해봤는데 잘못된 점이 있으면 고쳐주시면 감사하겠습니다ㅠㅠ
- 1
- 6
- 793