-
카테고리
-
세부 분야
프론트엔드
-
해결 여부
미해결
메서드가 호출된 후에 정의되도 상관 없나요?
18.11.16 08:38 작성 조회수 107
1
안녕하세요. 좋은 강좌 잘 듣고 있습니다.
종종 메서드가 호출이 되고, 그다음 정의되는 부분이 있습니다.
예를들어 아래의 코드에서는
SearchModel.list(query).then(data =>{
this.onSearchResult(data)
})
부분에서 onSearchResult가 먼저 호출되고, 정의 되는 것은 코드의 마지막 부분입니다.
- 이런식으로 사용해도 되는 이유가 export와 관계가 있는 건가요?
- 아니면 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) //이 부분이 나중에 정의 되어도 상관 없는지?
}
}
답변을 작성해보세요.
0
0
김정환
지식공유자2018.11.16
질문 이해가 좀 어려운데요..
이게 맞나요?
"어떻게 search() 정의부에서 코드 아래에 위치한 onSearchResult()를 호출하는가?"
지금은 함수를 정의하는 부분이기 때문에 괜찮습니다.
브라우져가 이 코드를 해석한뒤 실행하는 시점에는
모든 함수의 위치가 확인된 상태기 때문에 호출할수 있는 것이죠.
확신할순 없지만 함수 호이스팅이지 않을까 생각합니다.
답변 2