함수의 닫는 중괄호 바로 뒤에 괄호를 사용하는 Javascript 코드를 보았습니다. 사용 된 것을 이해할 수 없습니다.중괄호 뒤에 오는 괄호는 무엇을 의미합니까?
예 :
function foo(bar){
return bar;
}(0);
(0)
은 무엇입니까?무엇이라고합니까?
언제이 기술을 사용해야합니까?
함수의 닫는 중괄호 바로 뒤에 괄호를 사용하는 Javascript 코드를 보았습니다. 사용 된 것을 이해할 수 없습니다.중괄호 뒤에 오는 괄호는 무엇을 의미합니까?
예 :
function foo(bar){
return bar;
}(0);
(0)
은 무엇입니까?
무엇이라고합니까?
언제이 기술을 사용해야합니까?
, 당신은 단순히 두 개의 문을 가지고 있고 그것은하는 것과 같습니다
function foo(bar){
return bar;
}
0;
이것은 이 아니며 자체 호출 기능입니다. 첫 번째 문은 함수 선언이고, 두 번째 문은 단순히 숫자 리터럴 0
이며 아무 것도 수행하지 않습니다. 괄호는 함수를 실행하지 않으며, grouping operator입니다.
어떻게 증명할 수 있습니까? 시도 :
function foo(bar){
return "bar";
}(0);
출력 내용을 알려주십시오. 우리는 함수 표현식이 있다면
그것은, 자기 호출 함수가 될 것입니다. 이를 위해 그룹화 연산자를 사용하여 표현식으로 계산되도록 할 수 있습니다. 예를 들어
는 :
(function foo(bar){
return bar;
})(0);
이 명명 된 함수식이다. 표현식 ((function ....)
)의 결과는 함수 참조이며 (0)
은 인수로 0
을 전달하여 함수를 실행합니다.
는 괄호의 위치도 수 :
(function foo(bar){
return bar;
}(0));
어쩌면 이것은 당신이 본 것입니다.
이 기술은 이미 광범위하게 여기에서 논의되었다 What is the purpose of a self executing function in javascript?
펠릭스 감사합니다, 당신은 독수리 눈을 가지고 있어야합니다 :) – jon
는 :
function foo() {
alert('hello');
}
foo(); // call
당신은 또한 직접호출 할 수 있습니다 :
(function foo(){
alert('hello');
})(); // <--------------
는 현재 당신이 Function Declaration
이 .
(function foo(bar){
return bar;
})(0);
을 그리고 지금은 Function Expression
하고 즉시 호출합니다 : 실제로, 당신은 괄호이처럼이 필요 자기 호출하려면 (그것을 표현하기 위해). Function Declaration
와 Function Expression
의 차이를 알고, Kangax하여이 우수한 기사를 체크 아웃 :
(0)의 기능은 무엇입니까?
그것은 너무 bar
함수 내에서 0
것 foo
함수에 전달 된 인수입니다.
이게 무엇입니까?
자기 기입 기능 또는 자체 실행 기능입니다. this을보고 싶을 수도 있습니다.
언제이 기술을 사용해야합니까?
함수를 즉시 호출하고 변수 범위를 해당 함수 식에만 유지하려는 경우. 외부 세계 나 함수 표현식 외부의 코드에서는 사용할 수 없습니다.
상세 정보 :
팁 :'(function (...) {...}) (...);'반환 값이 var에 할당되지 않은 익명 함수를 사용하는 경우에도 항상 작동합니다. –
이것은 불행히도 올바르지 않습니다. . 내 대답을 보라. 그러나 아마도 OP는 나쁜 예를 보여 주었을 것입니다. –
@FelixKling : +1. OP의 구문을 간과하고 자세한 내용을 추가했습니다. – Sarfraz
이 자체 호출 기능입니다. 0을 매개 변수로 전달합니다. 예를 들어 0
동일 따라서 함수가 반환 될 줄은 아래의 기능은 동일합니다 : 당신의 예에서
function foo(bar) {
return bar;
}
foo(0); // returns 0
그냥 나쁜 예제를 제공 한 경우, 다음 질문의 중복 (HTTP [자바 스크립트 객체/함수/클래스 선언을 둘러싼 괄호 무슨 뜻 이죠?] //stackoverflow.com/questions/440739/what-do-parentheses-surrounding-a-javascript-object-function-class-declaration-m). –