2013-08-27 2 views
5

대 기능은 어떻게익명의 자바 스크립트 함수 호출! 기능

function(){ alert("test123");}() 

SyntaxError: Unexpected token (

동안
!function(){ alert("test123");}() 

경고 "test123"

을 만들어 온?

+4

http://benalman.com/news/2010/11/immediately-invoked-function-expression/ – zerkms

+0

@zerkms 실제로 문제의 핵심을 아주 잘 설명하므로 답변으로 게시해야합니다. – Kippie

+1

자, 거기에 복제본이 있습니다 ... –

답변

3

! 부호를 추가하면 선언을 표현식으로 변환하고 즉시 호출하기 때문입니다. 괄호로 기능을 둘러싸함으로써 오류없이 작동하는 첫 번째 예제를 만들 것입니다 :

(function(){ alert("test123");})() 

그것을 명확 당신과 같은 무언가로 첫 번째 표현식에 대해 생각할 수있는하려면 :

if (false || !function(){ return false; }()) 


과 같은 @zerkms 거기에 전체 설명은 Immediately-invoking functions입니다.

+0

너무 좋지 않습니다. 적절한 답변을 쓸 수는 없지만 ... "식별자"는 정확한 용어가 아닙니다. 오히려 그 구별은 정의와 표현 사이에 있습니다. 전자는 즉시 호출 할 수 없습니다. –

+1

오른쪽 트랙이지만 잘못된 설명입니다. 그! 선언을 표현식으로 변환합니다. – slebetman

+0

함수를 정의하고 _not_ 호출 할 수 있습니다.'! function() {alert ("not called")}' –

관련 문제