JavaScript)“간접적” vs “직접적” 함수 실행

Blackeichi·2022년 12월 29일
0
post-custom-banner

함수를 실행시키는데는 두 가지 방법이 있다.

그것은 간접적, 직접적 함수 실행이다.

function add() {
something = someNum + someOtherNum;
}
add() vs add

왜 이러한 두 가지 방법이 있는지를 이해해보자

보통, 이름으로 정의된 함수(예: add)를 호출할 때 괄호를 추가한다. (함수가 필요한 모든 매개변수가 괄호 안에 들어가거나 위의 예시처럼 매개변수가 필요하지 않은 경우 빈 괄호를 추가한다).

=> add() --> 직접적 함수 실행

이게 바로 코드의 함수를 실행하는 방법이며 JavaScript는 이 문장이 나올 때마다 함수의 코드를 실행한다.

하지만 가끔은, 함수를 바로 실행하고 싶지 않을 때가 있다. JavaScript에 미래의 어느 시점에(예: 일부 이벤트가 발생할 때) 어떤 기능이 실행되길 원할 수도 있다.

이 경우에 함수를 직접 호출하는 대신 JavaScript에 함수 이름을 제공한다.

=> someButton.addEventListener('click', add);

이 스니펫은 JavaScript에게 이렇게 지시합니다. "이 버튼이 클릭되면 add를 실행해.".

스니펫(snippet)은 재사용 가능한 소스 코드, 기계어, 텍스트의 작은 부분을 일컫는 프로그래밍 용어

someButton.addEventListener('click', add()); 는 이 경우에는 오답이 될 것이다.

그 이유는 JavaScript는 스크립트를 분석/실행하고 이벤트 리스너를 등록하는 즉시 add를 실행하기 때문이다다 - 괄호를 추가했기 때문

아래와 같이 코드의 어딘가에 add를 추가하는 것만으로는 아무 효과가 없다.

let someVar = 5;
add
alert('Do something else...');
Why?

왜냐하면 함수의 이름만 있고 JavaScript에 다른 정보를 제공하지 않았기 때문이다. 그러면 JavaScript는 그 함수 이름으로 무엇을 해야 하는지 알지 못해서("클릭이 발생할 때 실행해야 하나요? 어느 정도의 시간이 지나면? 모르겠습니다...") 그리고 결과적으로 JavaScript는 이 문장을 무시하게 된다.

profile
프론트엔드 주니어 개발자 한정우입니다. 😁
post-custom-banner

0개의 댓글