빈 괄호를 사용하거나 괄호 없이 함수를 호출하는 것은 인수가 없는 함수에 대해 중요하지 않은 것처럼 보일 수 있습니다. 그러나 자세히 살펴보면 미묘한 차이가 드러납니다.
다음 두 가지 예를 고려하세요.
window.onload = initAll();
window.onload = initAll;
1 . 즉시 호출:
첫 번째 예에서 빈 괄호는 initAll() 함수를 즉시 호출하고 반환 값은 window.onload에 할당됩니다. 일반적으로 onload 이벤트가 발생할 때 initAll이 실행되어야 하기 때문에 이는 원하는 동작이 아닙니다.
2. 참조 할당:
두 번째 예에서는 initAll 함수 자체가 window.onload에 할당됩니다. 이는 로드 이벤트가 트리거될 때까지 함수가 실행되지 않음을 의미합니다. 이 접근 방식을 사용하면 이벤트 핸들러가 올바르게 설정됩니다.
JavaScript에서 함수는 일급 객체입니다. 즉, 변수에 저장하고, 인수로 전달하고, 속성으로 할당할 수 있습니다. 이것이 다음 구문이 유효한 이유입니다.
window.onload = () => initAll();
이 경우 호출 시 initAll()을 즉시 호출하는 익명 함수가 생성됩니다. 그러나 이 외부 함수의 참조는 여전히 window.onload에 할당되어 있으므로 이벤트 핸들러는 로드 이벤트가 두 함수의 실행을 트리거할 때까지 기다립니다.
위 내용은 JavaScript 함수 호출: 빈 괄호 – 즉시 호출 또는 참조 할당?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!