(function(marker, title) { .......})(arg1,arg2); 이런 형식은 무슨 의미인가요?

아래의 샘플소스를 보다 보니…
(function(marker, title) { …})(arg1,arg2); 이런 형식의 함수 문법이 나옵니다.

function이라는 지시어 앞과 함수의 정의 끝에 괄호’( 함수명(){})'를 씌우는 경우는
jquery 문법에서 맨 앞에 $가 생략된 것인가요?
아래 소스에서는 파라미터가 (marker, places[i].place_name);처럼 붙었는데
이때 끝에 붙는 (arg1,arg2)는 무슨 뜻인가요?

아래 샘플소스
for ( var i=0; i<places.length; i++ ) {
// 마커를 생성하고 지도에 표시합니다
var placePosition = new kakao.maps.LatLng(places[i].y, places[i].x),
marker = addMarker(placePosition, i),
itemEl = getListItem(i, places[i]); // 검색 결과 항목 Element를 생성합니다
// 검색된 장소 위치를 기준으로 지도 범위를 재설정하기위해
// LatLngBounds 객체에 좌표를 추가합니다
bounds.extend(placePosition);
// 마커와 검색결과 항목에 mouseover 했을때
// 해당 장소에 인포윈도우에 장소명을 표시합니다
// mouseout 했을 때는 인포윈도우를 닫습니다

아래부분 함수 앞에 괄호를 씌우는 것은 무슨 의미인가요?

---->여기부터
(function(marker, title) {
kakao.maps.event.addListener(marker, ‘mouseover’, function() {
displayInfowindow(marker, title);
});
kakao.maps.event.addListener(marker, ‘mouseout’, function() {
infowindow.close();
});

        itemEl.onmouseover =  function () {
            displayInfowindow(marker, title);
        };

        itemEl.onmouseout =  function () {
            infowindow.close();
        };
    })(marker, places[i].place_name);

<-------여기까지
fragment.appendChild(itemEl);
}

kakao.maps.event.addListner로 등록한 이벤트 핸들러 내부에서 사용할 변수들 중,
markerplaces[i].place_name 변수를 해당 익명 함수의 스코프(scope)에 바인딩 시키기 위해 사용한 기법입니다.

jQuery와는 상관 없으며 카카오 지도 API만의 특별한 문법도 아닙니다.

places.forEach 를 사용하시거나
for 문의 증가 변수 i의 선언을 var 대신 let으로 해 주시면 굳이 쓸 필요 없는 기법이기도 합니다.

첨언하자면

  • var로 선언한 변수는 자바스크립트 언어 특성상 블락 스코프가 제대로 적용되지 않는 함정이 있습니다.
  • 함수를 소괄호로 묶어서 호출하는 form은 IIFE 의 한 종류이며 함수를 선언 즉시 실행하는 방식입니다.

감사합니다.