본문 바로가기
01_PROJECT/OBJECT _2023

[ JavaScript ] 이벤트 핸들러를 등록할 때 ()빼고 함수명만 적기

by zestlumen 2023. 8. 2.

처음에 공부할 떄는 이런 기본적인 부분도 헷갈리곤 한다.

 

btnSend.addEventListner('click', sendLinkToEmail());​

 

btnSend.addEventListner('click', sendLinkToEmail);

 

addEventListner 메서드는 이벤트가 발생했을 때 실행할 함수를 인자로 받는다.

그럼 click 되었을 때 함수가 실행되어야 하니까 ()를 붙여서

sendLinkToEmail()이라고 써줘야 하지 않을까? 하고,

()를 쓰면 즉시 호출되는 건 알지만 인자로 들어가있는데 설마 즉시 호출 되겠어 하고,

 

그러나 괄호 ()를 추가하게 되면 함수를 즉시 실행시키는 것이 되어버린다.

즉시 호출이 되어버리면 이벤트 핸들러가 등록되자마자 함수가 실행된다.

페이지 로딩과 상관없이, 이벤트와는 상관없이  함수가 즉시 실행되는 것이다.

 

해당 이벤트가 발생할 때 실행하도록 하기 위해서는 ()를 붙이지 않은 함수명을 적어줘야 한다.