느낌표로 시작하는 자바스크립트 함수
September 3, 2014
자바스크립트 소스를 보다보면 가끔 만나게 되는 녀석이 느낌표로 시작하는 함수다. 평소에 궁금했는데 마침 스택오버플로우에 이를 설명해주는 글이 있어서 옮겨본다.
아래의 함수는 선언문은 아무것도 반환하지 않는다. (혹은 undefined
이다.)
때로는 함수가 만들어지자 마자 즉시 실행하기 위해 다음과 쓰고 싶어하는 사람도 있겠지만 이것은 SyntaxError
다.
함수 앞에 느낌표(!)를 붙이면 표현식으로 다루게 된다. 따라서 다음과 같이 실행문을 쓸 수 있다.
게다가 여기서 리턴되는 불린값은 함수가 반환하는 것의 반대 값을 반환한다. 위의 경우에는 true
를 반환한다. 왜냐하면 !undefined
는 true
이기 때문이다. 만약 함수 실행의 결과로 실제 반환되는 값을 얻으려면 다음과 같은 방법으로 할 수 있다.
요점은 느낌표를 함수 앞에 붙임으로써 함수 선언문을 표현식으로 만들 수 있고 이로써 즉시 실행할 수 있게 된다는 것이다. 자바스크립트 파일을 압축 할 경우에 몇 바이트라도 줄이고자 사용되곤 하는 방법이기도 하다.