Javascript & React

[Javascript] Javascript에서 함수 호출 때 괄호의 유무?

Hoo_Dev 2022. 12. 23. 10:00

JS 함수 사용 할 때 괄호가 있고 없고의 차이?

 

참고 - https://okky.kr/articles/408176

위 블로그의 내용을 읽어보면

 

■ JavaScript

<script type="text/javascript">
	window.onload = function() {
		setInterval(infinite, 5000);
	};

	function infinite() {
		console.log("aaa");
	}
</script>

▶ 결과 : 5초 후 console창에 aaa가 5초마다 찍힙니다.

 

■ JavaScript

<script type="text/javascript">
	window.onload = function() {
		setInterval(infinite(), 5000);
	};

	function infinite() {
		console.log("aaa");
	}
</script>

▶ 결과 : 시작과 동시에 aaa가 찍히며 더 이상 찍히지 않습니다.

 

 

라는 내용이 있다. 그에 대한 답변들을 살펴보면

setInterval(function, milliseconds, param1, param2, ...) 와 같이 setInterval은 첫번째 인자로는 함수 그 자체를 받아줘야 한다.

console.log(infinite); 처럼 함수 이름 자체를 출력해보면

function infinite(){ colosle.log("aaa")} 와 같이 함수 자체의 내용을 담고 있다는 것을 알 수 있다.

 

 

정리하자면

setInterval() 함수 안에 들어가는 infinite함수가

infinite()로 들어가버리게 된다면 실행한 후 리턴값을 받아준다는 얘긴데 리턴이 없으므로 undefined가 반환 된다.

infinite로 넣게 된다면 그 함수 객체 자체가 들어가게 된다.