JavaScript/javascript
Javascript 함수(function)에 괄호 () 여부
BBB.OOO
2022. 10. 12. 15:23
반응형
Javascript 에서 함수를 생성하고 해당 함수를 괄호 없이 호출할때가 있다.
함수를 호출할 때 괄호가 있을때와 없을때의 차이점을 알아보자
아래와 같은 예시가 있다.
a 라는 함수에 console.log 를 찍는 함수인데 괄호 없이 a 함수를 호출했을 때는 함수 그 자체를 보여준다.
하지만 a(); 처럼 괄호를 붙일 경우 함수 내부에 선언된 console.log 가 정상적으로 찍힌다.
이유는 함수에 () 괄호가 붙을 경우 자바스크립트 함수를 즉시 호출한다.
하지만 함수에 () 괄호가 없을 경우 함수의 주소를 뜻한다.
추가로 아래 예시도 확인하자.
setInterval() 을 통해 1초마다 함수를 호출하는 구문이다.
1초마다 a라는 함수를 괄호없이 잘 호출하는걸 볼 수 있다.
setInterval() 을 통해 a 함수를 괄호없이 함수 그 자체를 선언해놨기 때문에 1초마다 잘 호출한다.
위 내용을 풀어 쓰면 아래와 같다.
setInterval(
function a(){console.log('123')}, 1000
)
a 라는 함수 그 자체를 setInterval 에 넣어줬기 때문에 1초마다 함수를 실행한다.
하지만 아래와 같이 a() 라고 a 함수에 () 괄호를 써 즉시 호출하면 console.log('123')을 찍은 다음에
호출할 함수가 없으므로 setInterval은 실행되지 않는다.
반응형