>웹 프론트엔드 >JS 튜토리얼 >JavaScript 함수 호출: 빈 괄호 – 즉시 호출 또는 참조 할당?

JavaScript 함수 호출: 빈 괄호 – 즉시 호출 또는 참조 할당?

Susan Sarandon
Susan Sarandon원래의
2024-12-08 13:56:11335검색

JavaScript Function Calls:  Empty Parentheses – Immediate Invocation or Reference Assignment?

JavaScript 함수 호출: 괄호가 중요합니다

빈 괄호를 사용하거나 괄호 없이 함수를 호출하는 것은 인수가 없는 함수에 대해 중요하지 않은 것처럼 보일 수 있습니다. 그러나 자세히 살펴보면 미묘한 차이가 드러납니다.

즉시 호출과 참조 할당

다음 두 가지 예를 고려하세요.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.