Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript 함수 앞에 붙는 느낌표(!)의 역할은 무엇일까?

JavaScript에서 함수 앞의 느낌표(!)란?

JavaScript 코드를 보다 보면 함수 선언 앞에 느낌표(!)가 붙어 있는 경우를 종종 발견할 수 있습니다. 이 기호는 해당 함수가 즉시 실행 함수 표현식(IIFE, Immediately-Invoked Function Expression)임을 나타내는 역할을 합니다.

느낌표만으로 함수가 실행되지는 않습니다

느낌표 자체만으로 함수가 호출되는 것은 아닙니다. 실제 실행을 위해서는 함수 뒤에 소괄호 ()를 붙여야 합니다.

!function foo() {}()

여기서 ()!보다 높은 연산자 우선순위를 가지기 때문에, 함수가 즉시 호출됩니다.

더 일반적인 IIFE 작성 방법

물론 느낌표 없이도 소괄호로 전체를 감싸는 전통적인 방식을 사용할 수 있습니다.

(function(){})();

느낌표가 true를 반환하는 이유

흥미로운 점은 !를 사용하면 표현식이 true를 반환한다는 것입니다. 그 이유는 다음과 같습니다.

  • 즉시 실행 함수 표현식은 기본적으로 undefined를 반환합니다.
  • 따라서 결과적으로 !undefined가 되고, JavaScript에서 undefined는 falsy 값이므로 논리 부정 연산 결과 true가 됩니다.

정리하면, 함수 앞의 느낌표는 문법 오류를 피하면서 함수 선언을 표현식으로 변환해 즉시 실행할 수 있게 해주는 편리한 트릭입니다. 특히 여러 파일을 하나로 합칠 때 이전 줄의 세미콜론 누락으로 인한 오류를 방지하는 데도 유용하게 사용됩니다.