• 목록
  • 아래로
  • 위로
  • 6
  • 홀민
  • 조회 수 219

제가 자바스크립트를 잘몰라서 원론적인 질문 하나 드립니다.



다음 지도 코드 작성중입니다.


daum.maps.event.addListener(map, 'dragend', function() { // 맵이 이동 되면 맵정보를 다시 읽어옵니다.
    getInfo(); // 맵정보를 읽어옴
});


이런코드를 짜게 되었는데요.. 이유를 모릅니다.


function() 이 변수로 들어가있는데요.

getInfo()함수를 직접 넣으니 오류가 납니다.


function() 는 대체 먼가요?

함수 이름도 없고.....그냥 함수를 호출 하는데 그 함수는 {} 안의 함수다.


이런 뜻인가요?


만약 그렇다면 왜 함수를 직접 넣으면 오류가 나게 되나요?

자바스크립트는 함수를 변수로 취급 할수 있다고 알고 있는데.

함수는 저런식으로 넣어야 하는건지..

그냥 쓰기만 해서 ... 대체 왜 그런지 궁금하네요.


아시는 분 답변 부탁드립니다.

댓글 6

title: 황금 서버 (30일)humit
profile image

function() 의 경우에는 이름이 없는 익명함수입니다.

그리고 해당 구문에 대해서는 콜백 함수로 검색을 하시면 아실 수 있습니다.

 

참고로 아래와 같이 사용하시면 동일한 결과를 얻으실 수 있습니다.

daum.maps.event.addListener(map, 'dragend', getInfo);

 

comment menu
2018.12.06. 11:51

신고

"humit님의 댓글"

이 댓글을 신고 하시겠습니까?

홀민 작성자 → humit
profile image

http://victorydntmd.tistory.com/

 

휴...너무 많은 글을 읽었습니다.

다 소화시키지도 못하겠지만. 읽다보니 계속 글을 타고 따라가게 되어서....

여튼 위에 페이지 좋네요.

 

답변 감사하고 배울것을 많이 알게 되었습니다.

 

말해주신 코드는 내일 한번 시도해보도록 할께요.

감사합니다.

comment menu
2018.12.07. 01:21

신고

"홀민님의 댓글"

이 댓글을 신고 하시겠습니까?

홀민 작성자 → 홀민
profile image

정말 잘 동작하네요.

---

daum.maps.event.addListener(map, 'dragend', getInfo()) ;

이렇게 넣으면 동작하지 않으면서

daum.maps.event.addListener(map, 'dragend', getInfo) ;

이렇게하면 왜 동작하는걸까요...?

혹시 알려주실수 있으신가요?

이름만 넣으면 콜백함수로 되는거 같은데..

 

 

다시한번 감사합니다.

comment menu
2018.12.07. 07:48

신고

"홀민님의 댓글"

이 댓글을 신고 하시겠습니까?

Hanam09 → 홀민
profile image

안녕하세요 대신답변하겠습니다.

 

이벤트리스너에서 이벤트가 발생될때 이벤트 함수가 실행 (Event())되게 됩니다. 

한가지 예를 들어보죠




var Event = function(){

    console.log("함수를 실행하셨습니다.");

}




Event라는 함수를 정의하였습니다.


이제 이 함수를 호출하려면 어떻게 해야할까요?




Event()




라는 코드를 실행해야합니다.


만약 




Event




라는 코드만 쓰면 어떻게 될까요?




 function(){

    console.log("함수를 실행하셨습니다.");

}




브라우져는 이런 값을 반환합니다.

정의된 함수만을 보여주는 거죠..


이 함수를 실행시키려면




(function(){

    console.log("함수를 실행하셨습니다.");

})();




이렇게 해야합니다. 괄호(실행자)가 붙어야하죠.


브라우져에 이런 코드를 넣어보세요




function(){

    console.log("함수를 실행하셨습니다.");

}



이 함수는 실행되지 않습니다. 실행자가 없기 때문이죠.


이벤트 리스너는 미리 호출할 함수를 정의만 해두고 이벤트가 일어날때마다 정의된함수를 호출해줍니다.




익명함수에서 addEventListener을 사용하면 (function(){}) 이런 익명함수 이벤트가 실행 (function(){})() 되게 됩니다.

근데 X.addEventListener(x,evt,callback()) 이렇게 하게되면 이벤트가 발생될때 (function(){}())() 이런 요상한게 실행되면서 타입에러가 발생됩니다.

comment menu
2018.12.08. 15:20

신고

"Hanam09님의 댓글"

이 댓글을 신고 하시겠습니까?

홀민 작성자 → Hanam09
profile image

그러면 결론적으로 익명함수에서 함수를 호출하려면 함수 호출 () 를 생각한채 함수 이름만으로 호출해야된다는 말이되네요..

제대로 이해하려면 자바스크립트를 깊이 있게 공부해야되는군요.

설명 감사합니다.

comment menu
2018.12.09. 16:23

신고

"홀민님의 댓글"

이 댓글을 신고 하시겠습니까?

Hanam09 → 홀민
profile image

네, 미리 함수를 정의만 해두어야 합니다.

 

감사합니다.

comment menu
2018.12.10. 18:54

신고

"Hanam09님의 댓글"

이 댓글을 신고 하시겠습니까?

권한이 없습니다.
번호 제목 글쓴이 날짜 조회 수
공지 [1차 해결 및 추가] 서버 접속 불가 문제 안내 12 마스터 24.06.20.15:22 499
공지 [작업 완료] 설 명절 맞이 서버 업데이트 안내 3 마스터 24.02.11.17:21 2529
공지 [중요] 호스팅 만료와 관련하여 일부 수칙이 변경됩니다. 4 마스터 23.01.14.02:23 6220
공지 [필독] 질문하는 방법 17 마스터 18.02.23.03:09 4632
646 자바스크립트로 RSA 암호화와 AES 암호화를 구현할 수 없나요? 1 Hanam09 17.08.21.17:36 372
645 저의 주소는 어떻게 되는지요. 7 gobiyah 16.10.30.18:06 372
644 파폭에서는 css의 transform이 적용이 안 되는건가요? 11 국내산라이츄 17.09.12.17:33 371
643 ICANN 인증 도메인 등록기관과 리셀러 간에 차이가 큰 가요? 5 이니스프리 17.02.05.21:52 371
642 리디렉션 자세한 설명 좀 부탁드립니다. 3 연우빠 17.09.19.15:33 369
641 개인 웹사이트를 만들어 보고 싶습니다. 3 JLee0715 17.02.06.01:49 369
640 닷홈 인코딩 설정 관련해서 질문 드려요 ㅠㅠ 6 image 이니스프리 19.07.11.00:38 368
639 썸네일 추출관련 정규식 표현을 어떻게 해야하나요? 4 image 슬기 19.07.16.16:31 367
638 패널 크론잡 쓰실줄 아시는분 있나요? 2 image 샹키 17.09.27.01:34 367
637 배터리 수명 단축을 가속화시키는 법이 있을까요? 11 image 제르엘 20.10.04.23:02 366
636 부트스트랩 모달의 사이즈를 구해서 사이즈에 맞게 이모지 n개/행을 출력하려고 하는데요. 5 image 이니스프리 19.08.23.20:50 364
635 css 로딩 애니메이션 딜레이시키기 5 프요 17.10.19.18:39 364
634 혹시 호스트 차원에서 IP차단도 지원이 되나요? 2 Nodeulnaru 17.02.27.23:29 361
633 서버 기계를 추천해주세요 7 260578 18.03.31.08:06 360
632 호스팅을할떄에 5 Sein&Music 16.10.27.11:50 360
631 프로필 설정 이미지 크기 얼마정도 하면대나요? 3 핫슈 17.06.16.04:43 359
630 Xpenology 설치에 대해서 6 뉴비 18.05.16.17:24 358
629 호스팅 세팅 도움주실분 급하게 찾아요 ㅠ.ㅠ 1 HOya 17.01.23.07:30 358
628 윈도우10 공유폴더 설정이 안돼서 질문드립니다! 5 image 물질 18.07.17.03:33 357
627 [Summernote] 에디터 아이콘 문제 image 260578 19.05.19.21:58 356