2011-12-20 3 views
0

가능한 중복 :왜 자바 스크립트로 호출하기 전에 익명 함수를 괄호로 묶어야합니까?

을 : 나는 다음과 같이 호출 할 수 있습니다 전에 괄호 안에 익명의 기능을 래핑하는 이유
Why this kind of function invocation is wrong in JavaScript?
Is there any reason to wrap anonymous JavaScript functions in braces?

이 좋은 설명이 있나요

(function() { alert('foo'); })(); 

대신

function() { alert('foo'); }(); 

?

Clojure와 같이 함수를 전달할 수있는 다른 언어가 있습니다. Clojure에서 함수 호출은 (function args)와 같이 보입니다. 예 : (+ 1 2). ((fn [a b] (+ a b)) 1 2) 일반적으로 명명 된 함수를 사용하는 곳이라면 익명의 함수로 대체 할 수 있습니다. Javascript에서는 이것이 아닌 것처럼 보입니다.

+0

심지어는'(function() {foo ') ;;});' –

+0

알다시피, 괄호 외에도 익명의 함수 표현식을 만드는 많은 방법이 있습니다. 예를 들어'+ function() {alert ('foo'); }();'. 괄호를 사용하면 특정 문제가 발생할 수 있습니다. –

+0

가장 간단한 방법은 (아마도 최악의 경우) 설명 할 수 있습니다. 함수가 객체이고 반대의 경우도 마찬가지이므로 함수 주위에 대괄호를 추가하면 객체가 정의에서 벗어납니다. – Bakudan

답변

1

함수 주위에 괄호가 없기 때문에 코드는 잘못된 함수 선언이고 ()을 끝에 추가하면 구문 오류가 발생합니다.

그러나 함수 주위에 괄호를 사용하면 끝 부분에 ()을 추가하여 실행할 수있는 익명 함수에 대한 함수 포인터를 얻을 수 있습니다.

관련 문제