처음에 공부할 떄는 이런 기본적인 부분도 헷갈리곤 한다.
btnSend.addEventListner('click', sendLinkToEmail());
btnSend.addEventListner('click', sendLinkToEmail);
addEventListner 메서드는 이벤트가 발생했을 때 실행할 함수를 인자로 받는다.
그럼 click 되었을 때 함수가 실행되어야 하니까 ()를 붙여서
sendLinkToEmail()이라고 써줘야 하지 않을까? 하고,
()를 쓰면 즉시 호출되는 건 알지만 인자로 들어가있는데 설마 즉시 호출 되겠어 하고,
그러나 괄호 ()를 추가하게 되면 함수를 즉시 실행시키는 것이 되어버린다.
즉시 호출이 되어버리면 이벤트 핸들러가 등록되자마자 함수가 실행된다.
페이지 로딩과 상관없이, 이벤트와는 상관없이 함수가 즉시 실행되는 것이다.
해당 이벤트가 발생할 때 실행하도록 하기 위해서는 ()를 붙이지 않은 함수명을 적어줘야 한다.
'01_PROJECT > OBJECT _2023' 카테고리의 다른 글
[ JavaScript ] substr() is deprecated -> substring() 문자열 일부 추출하기 (0) | 2023.08.02 |
---|---|
[ JavaScript ] 헷갈리는 for...in과 for...of, in의 내부,속성만 기억하자 (0) | 2023.08.02 |
[ JavaScript ] replace와 정규식을 사용해서 해당 문자 대체하기(제거하기) (0) | 2023.08.02 |
[ CSS ] font-size (폰트 사이즈) rem 과 em이 뭐죠? (0) | 2023.08.02 |
[ Firebase ] getAuth(app)와 getFirestore(app)는 전역에 쓸까, 지역에 쓸 (0) | 2023.08.01 |