강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

ryu sin님의 프로필 이미지
ryu sin

작성한 질문수

실습 UI 개발로 배워보는 순수 javascript 와 VueJS 개발

검색결과 구현 1

메서드가 호출된 후에 정의되도 상관 없나요?

작성

·

230

2

안녕하세요. 좋은 강좌 잘 듣고 있습니다.

종종 메서드가 호출이 되고, 그다음 정의되는 부분이 있습니다.

예를들어 아래의 코드에서는

SearchModel.list(query).then(data =>{

this.onSearchResult(data)

})

부분에서 onSearchResult가 먼저 호출되고, 정의 되는 것은 코드의 마지막 부분입니다. 

  1. 이런식으로 사용해도 되는 이유가 export와 관계가 있는 건가요?
  2. 아니면 hosting과 관계가 있는 건가요?

    이도 저도 아니라면 뭐때문에 가능한건지 알고 싶습니다.

export default {

init() {

FormView.setup(document.querySelector('form'))

.on('@submit', e => this.onSubmit(e.detail.input))

.on('@reset', e => this.onResetForm())

ResultView.setup(document.querySelector('#search-result'))

},

search(query){

//search api를 사용.

console.log(tag, 'search()', query);

SearchModel.list(query).then(data =>{

this.onSearchResult(data)

})

},

onSubmit(input){

console.log(tag, 'onSubmit()', input);

this.search(input)

},

onResetForm(){

console.log(tag, 'onResetForm()');

},

onSearchResult(data){

ResultView.render(data) //이 부분이 나중에 정의 되어도 상관 없는지?

}

}

답변 2

0

ryu sin님의 프로필 이미지
ryu sin
질문자

질문이 좀 두서가 없었네요.

넵. 정확하게 보셨고, 답변 감사합니다.

0

김정환님의 프로필 이미지
김정환
지식공유자

질문 이해가 좀 어려운데요..

이게 맞나요?

"어떻게 search() 정의부에서 코드 아래에 위치한 onSearchResult()를 호출하는가?"

지금은 함수를 정의하는 부분이기 때문에 괜찮습니다.

브라우져가 이 코드를 해석한뒤 실행하는 시점에는

모든 함수의 위치가 확인된 상태기 때문에 호출할수 있는 것이죠.

확신할순 없지만 함수 호이스팅이지 않을까 생각합니다.

ryu sin님의 프로필 이미지
ryu sin

작성한 질문수

질문하기