도와주세요

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

홀민2018.12.06 09:10조회 수 60댓글 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

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

     

    감사합니다.

댓글 달기

번호 제목 글쓴이 날짜 조회 수
공지 호스팅 접속불가 문제는 완전히 해결된 것으로 결정합니다.10 마스터 2018.12.07 206
공지 메일 발송 문제에 관해8 마스터 2018.12.05 211
공지 회원 전용 페이지가 생겼습니다.12 마스터 2018.03.20 2467
공지 [필독] 질문하는 방법5 마스터 2018.02.23 526
501 파이썬 멜론차트 크롤링 구현 관련17 title: 포토샵joyful 2018.12.08 172
500 음원스트리밍은 음원 보안을 어떤 방식으로 하나요?15 title: 포토샵joyful 2018.12.06 108
제가 자바스크립트를 잘몰라서 원론적인 질문 하나 드립니다.6 홀민 2018.12.06 60
498 또다시 WWW 관련하여6 협스 2018.12.05 58
497 다음 api 사용하려고 뒤적거리다보니 curl_init, curl_easy_init 비교7 홀민 2018.12.05 61
496 콘서트 가보신 분 있으신가요?5 Blessed_Umbrella 2018.12.04 49
495 사이트 정보 등록 관련5 title: 포토샵joyful 2018.12.01 51
494 WP에서 스팸....?11 협스 2018.11.30 87
493 스마트폰 연락처 관리를 어떻게 하시나요?8 이니스프리 2018.11.29 84
492 공유폴더가 안되는데 왜 안되는지를 모르겠습니다.3 calm 2018.11.27 49
491 [PHP] nl2br 함수 관련 문제 재발1 Blessed_Umbrella 2018.11.26 37
490 스마트 동기화가 가능한 클라우드 추천 부탁드려요~!2 이니스프리 2018.11.24 52
489 스포어 서버에서는 JQuery를 사용할 수 있나요?4 Blessed_Umbrella 2018.11.23 50
488 [PHP] nl2br 함수 관련3 Blessed_Umbrella 2018.11.21 56
487 원래 .co.kr 도메인과 .kr 도메인을 따로 따로 구입해야 하는건가요?7 맛스타 2018.11.20 80
486 노트북이 너무 시끄럽습니다.10 네모 2018.11.19 101
485 안녕하세요. AJAX로 페이지 긁어오는데에 보안오류가 생겼는데 조언을 구하고자 합니다.6 Hanam09 2018.11.19 55
484 웹페이지의 상단 메뉴를 고정하는 플러그인에 관하여 질문 드립니다4 이니스프리 2018.11.19 77
483 mysql에서 select * from 테이블....2 홀민 2018.11.19 32
482 네이버 카페 대문에 입력할 이미지맵이 적용 안됩니다.ㅠㅜㅠㅜ 빙그래 2018.11.16 45
이전 1 2 3 4 5 6 7 8 9 10... 26다음
첨부 (0)
서버에 요청 중입니다. 잠시만 기다려 주십시오...