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로 넣게 된다면 그 함수 객체 자체가 들어가게 된다.
'Javascript & React' 카테고리의 다른 글
[Javascript] 자바스크립트 Closure에 대한 이해와 설명( + 예시 ) (0) | 2023.01.25 |
---|---|
[React] RTK(Redux Tool Kit)에 대해 알아보자 (0) | 2022.12.28 |
[Javascript] 일급 객체, Callback함수, 고차함수 (0) | 2022.12.23 |
[Javascript] this (일반 함수에서의 this, 화살표 함수에서의 this) (0) | 2022.12.23 |
JavaScript의 주요 개념 정리(문법) (0) | 2022.04.26 |