도와주세요

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

홀민2018.12.06 09:10조회 수 97댓글 6

    • 글자 크기

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



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


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


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


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

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


function() 는 대체 먼가요?

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


이런 뜻인가요?


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

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

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

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


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

    • 글자 크기
음원스트리밍은 음원 보안을 어떤 방식으로 하나요? (by joyful) 또다시 WWW 관련하여 (by 협스)
  • 2018.12.6 11:51

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

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

     

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

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

     

  • @humit
    홀민글쓴이
    2018.12.7 01:21

    http://victorydntmd.tistory.com/

     

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

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

    여튼 위에 페이지 좋네요.

     

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

     

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

    감사합니다.

  • 홀민글쓴이
    2018.12.7 07:48

    정말 잘 동작하네요.

    ---

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

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

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

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

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

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

     

     

    다시한번 감사합니다.

  • @홀민
    2018.12.8 15:20

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

     

    이벤트리스너에서 이벤트가 발생될때 이벤트 함수가 실행 (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(){}())() 이런 요상한게 실행되면서 타입에러가 발생됩니다.

  • @Hanam09
    홀민글쓴이
    2018.12.9 16:23

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

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

    설명 감사합니다.

  • @홀민
    2018.12.10 18:54

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

     

    감사합니다.

댓글 달기

번호 제목 글쓴이 날짜 조회 수
공지 사이트 정보 등록에 경고로 변경된 분들 참고하세요.4 마스터 2019.06.19 223
공지 [중요 공지 포함] 사이트가 복구 되었습니다.37 마스터 2019.06.18 437
공지 호스팅 신청이 다시 가능합니다.17 마스터 2019.04.18 1315
공지 회원 전용 페이지가 생겼습니다.15 마스터 2018.03.20 6985
공지 [필독] 질문하는 방법5 마스터 2018.02.23 927
501 humit 님의 parseweb 글 관련....3 gimmepoint 2018.12.21 55
500 출첵 모듈의 쿠키와 관련하여 질문 드려요 ^^4 이니스프리 2018.12.21 76
499 CSRF 토큰 로그인 관련 질문 드립니다11 이니스프리 2018.12.20 201
498 호스팅신청페이지 및 FTP접속이 안됩니다.4 막시모 2018.12.20 77
497 브라우저와 기본응용프로그램과의 양방향 통신에 대하여6 Hanam09 2018.12.16 85
496 usb 부팅 질문 드립니다.1 calm 2018.12.14 49
495 파이썬 멜론차트 크롤링 구현 관련17 title: 에그joyful 2018.12.08 520
494 음원스트리밍은 음원 보안을 어떤 방식으로 하나요?15 title: 에그joyful 2018.12.06 137
제가 자바스크립트를 잘몰라서 원론적인 질문 하나 드립니다.6 홀민 2018.12.06 97
492 또다시 WWW 관련하여6 협스 2018.12.05 68
491 다음 api 사용하려고 뒤적거리다보니 curl_init, curl_easy_init 비교7 홀민 2018.12.05 74
490 콘서트 가보신 분 있으신가요?5 Piedots 2018.12.04 56
489 사이트 정보 등록 관련5 title: 에그joyful 2018.12.01 67
488 WP에서 스팸....?11 협스 2018.11.30 92
487 스마트폰 연락처 관리를 어떻게 하시나요?8 이니스프리 2018.11.29 266
486 공유폴더가 안되는데 왜 안되는지를 모르겠습니다.3 calm 2018.11.27 87
485 [PHP] nl2br 함수 관련 문제 재발1 Piedots 2018.11.26 53
484 스마트 동기화가 가능한 클라우드 추천 부탁드려요~!2 이니스프리 2018.11.24 158
483 스포어 서버에서는 JQuery를 사용할 수 있나요?4 Piedots 2018.11.23 69
482 [PHP] nl2br 함수 관련3 Piedots 2018.11.21 82
이전 1 2 3 4 5 6 7 8 9 10... 30다음
첨부 (0)
서버에 요청 중입니다. 잠시만 기다려 주십시오...