2014-07-16 2 views
0
매우 솔직

을, 질문은 왜자바 스크립트 정의 - 다음 통화 구문

(function(){ console.log('a'); }()); // 'a' 

또는

(function(){ console.log('a'); })(); // 'a' 

작동하지만

function(){ console.log('a'); }() // SyntaxError: Unexpected token (

에 오류가 있습니다 그래서? 이 행동의 의미는 무엇입니까? 아니면 여분의 괄호의 목적은 무엇입니까?

답변

1

여분의 괄호는 함수 표현식 대신 함수 선언function를 변환합니다.

함수 표현식 만이 후행 ()과 함께 즉시 호출 될 수 있습니다.

1

명확한 설명이 없습니다. JavaScript는 단순히 function(){ console.log('a'); }()을 성공적으로 구문 분석 할 수 없습니다. 수 (처음에 ! 주) 것 코드에

1.toString(); // Syntax error 
(1).toString(); // Works 

(작업) 대안 : 이것은 또한이 같은 다른 예제와 함께 발생

!function(){ console.log('a'); }()