program tip

즉시 함수 호출 구문

radiobox 2020. 8. 2. 18:03
반응형

즉시 함수 호출 구문


JSLint의 옵션, 사실 좋은 부분 중 하나는 건축 것을 의미한다 "즉시 호출 주위에 괄호 [필요한]을"는,

(function () {

  // ...

})();

대신 다음과 같이 작성해야합니다.

(function () {

  // ...

}());

내 질문은 이것입니다-왜이 두 번째 양식이 더 나은 것으로 간주 될 수 있습니까? 더 탄력적입니까? 오류가 적은 경향이 있습니까? 첫 번째 형태에 비해 어떤 이점이 있습니까?


이 질문을 한 이후로, 나는 함수 값과 함수 값을 명확하게 시각적으로 구분하는 것의 중요성을 이해하게되었습니다. 즉각적인 호출 결과가 대입 표현식의 오른쪽 인 경우를 고려하십시오.

var someVar = (function () {

  // ...

}());

최 괄호 구문이 불필요하지만, 개구 괄호의 값이 할당되고 있다는 선행 표시가 제공 되지 함수 자체가 아니라 함수의 결과가 호출된다.

이는 생성자 함수의 대문자 사용에 대한 Crockford의 조언과 유사합니다. 소스 코드를 보는 모든 사람에게 시각적 신호 역할을합니다.


Douglass Crockford의 스타일 컨벤션 안내서 : ( "즉시 호출"검색)

함수가 즉시 호출 될 때, 생성 된 값이 함수 자체가 아니라 함수의 결과라는 것이 확실해 지도록 전체 호출 표현식을 괄호로 묶어야합니다.

따라서 기본적으로 그는 함수 값과 함수 값을 더 명확하게 구분한다고 생각합니다. 따라서 코드 자체의 실질적인 차이가 아니라 스타일 문제입니다.

업데이트 된 참조, 기존 PPT가 더 이상 존재하지 않습니다


즉시 호출되는 익명 함수는 다음과 같은 이유로이를 함수로 묶습니다.

  1. 그것들은 함수 표현식이며 parens를 남겨두면 구문 오류 인 함수 선언으로 해석됩니다.

  2. 함수 표현식은 단어 function으로 시작할 수 없습니다.

  3. 함수 표현식을 변수에 할당하면 함수 자체가 리턴되지 않고 함수의 리턴 값이 리턴됩니다.그러므로, 파렌은 그 안에 무엇이 있는지 평가하고 가치를 만들어냅니다.함수가 실행될 때 후행 Parens ..}()는 함수가 즉시 실행되도록합니다.


또는 다음을 사용하십시오.

void function () {
...
} ()

참고 URL : https://stackoverflow.com/questions/939386/immediate-function-invocation-syntax

반응형