개발자

javascript에서 함수 또는 undefined인 경우 함수를 실행하는 방법

2022년 11월 21일조회 242

javascript를 사용하면서 타입을 크게 신경 쓰지 않고 사용하고 있습니다. a라는 값이 조건에 따라 함수가 될 수도 있고 undefined가 될 수도 있습니다. a() 이렇게 실행하면 undefined인 경우에는 Uncaught TypeError: a is not a function 이 발생합니다. 이 문제는 어떻게 해결하면 좋을까요? 제가 생각한 방법은 if (a) { a() } 이렇게 실행하는 방법입니다. 혹시 더 좋은 방법이 있다면 알려주세요!

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 2

엄홍재님의 프로필 사진

함수나 undefind인 경우에 함수 실행하는 방법을 찾고 계시네요. 저는 두가지 방법이 떠오릅니다. 1. a에 undefined를 넣지 않고 비어있는 함수를 넣으면 어떨까요? undefined 대신에 () => null을 넣으면 실행되어도 아무일도 일어나지 않으니까요 2. Optional chaining을 사용하는 겁니다. (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining) a?.() 이렇게 실행하면 undefind인 경우에는 따로 실행하지 않고 넘어갑니다. 저는 개인적으로 2번방법을 더 선호합니다!

김석현님의 프로필 사진

안녕하세요! 사실 윗 분께서 답변을 잘 남겨주신대로 a?.()를 사용하시는 게 가장 간단한 방법으로 보입니다만.. 혹시라도 확실한 타입 에러를 방지하고 싶으시다면, 아래와 같은 방법이 있을 것 같습니다. if (typeof a === 'function') { a(); } a의 타입이 무조건 함수일 때만 함수를 호출시키므로 혹시라도 a에 undefined이 아니라, number 혹은 string과 같은 타입이 들어와도 에러가 발생할 우려가 없습니다.

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!