자바스크립트에서는 익명 함수를 정의하고 같은 라인에서 즉시 호출할 수 있습니다. 이 기술은 일반적으로 클로저를 생성하거나 코드를 모듈화하는 데 사용됩니다. 하지만 왜 두 단계를 같은 줄에서 수행해야 하는지 혼란스러울 수 있습니다.
JavaScript 함수는 함수 표현식과 함수 선언이라는 두 가지 방법을 사용하여 정의할 수 있습니다. function sum(a, b) { ... }와 같은 함수 선언은 전역 범위의 일부인 명명된 함수를 만듭니다. 반면, 함수 표현식은 일반적으로 변수에 저장되거나 콜백으로 사용되는 익명 함수를 생성합니다.
익명 함수를 실행하려면 다음으로 래핑해야 합니다. 괄호(예: (function() { ... })()). 이 구문을 사용하면 함수를 변수에 할당하지 않고도 즉시 함수를 호출할 수 있습니다.
별도의 행에서 익명 함수를 정의하고 호출하려고 하면 오류 발생:
( function (msg){ alert(msg); } // missing semicolon ); // semicolon ends the statement ('SO');
함수 정의 뒤의 세미콜론이 명령문을 종료하고 다음 행을 독립형 괄호 표현식으로 남겨두기 때문입니다. 이 문제를 해결하려면 세미콜론을 제거하고 같은 줄에서 함수를 호출해야 합니다.
(function (msg){ alert(msg); })('SO');
이 요구 사항의 이유는 JavaScript의 세미콜론 삽입 동작 때문입니다. 명령문 끝에 세미콜론이 누락된 경우 JavaScript는 자동으로 세미콜론을 삽입합니다. 위의 예에서 함수 정의 뒤의 세미콜론을 제거하면 JavaScript가 줄 끝에 세미콜론을 삽입하여 함수 명령문을 효과적으로 종료합니다.
즉시 호출 익명 함수는 클로저를 생성하는 역할도 합니다. 클로저는 상위 함수의 실행이 완료된 후에도 상위 범위의 변수에 액세스할 수 있는 함수입니다. 위의 예에서 익명 함수는 msg 변수에 액세스할 수 있으며 이는 일반적으로 함수 본문이 끝난 후 범위를 벗어납니다.
같은 줄에서 익명 함수를 호출하는 것은 클로저와 모듈식 코드를 생성할 수 있는 기술입니다. 일반적인 오류를 방지하려면 함수 표현식과 선언의 차이점, JavaScript의 세미콜론 삽입 동작을 이해하는 것이 중요합니다.
위 내용은 IIFE(즉시 호출 함수 표현식)를 JavaScript의 한 줄에서 정의하고 호출해야 하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!