전문가들이 우회한다! 클로저 자체와는 관련이 없습니다. 제목을 어떻게 선택해야 할지 모르겠습니다. 그냥 숫자로 만든 것 뿐이니 양해해 주시기 바랍니다.
오늘 js를 막 배운 친구가 왜 메소드가 실행되지 않는지 물어보라고 코드를 하나 줬습니다.
function makefunc(x) {
return function ( ; function (){return x;}이 아니라 "0"입니다.
스크립트를 잘못 작성한 것이 아니라, return을 이해하지 못했을 뿐입니다. 현재 함수를 종료하고 해당 함수의 값을 반환합니다. 함수가 반환되면 함수 자체가 반환됩니다.
위의 코드를 다음과 같이 수정할 수 있습니다. 이는 다음과 같습니다. > 코드는 다음과 같습니다.
function makefunc(x) {
return (function (){
return x;
})();
}
alert(makefunc(0 )());
코드 복사
코드는 다음과 같습니다.
function makefunc(x) {
return (function (){
return x; })();
}
alert(makefunc(0) );
코드 복사
코드는 다음과 같습니다.
(function (){
return x;
})();
은 익명 함수입니다. 첫 번째 대괄호에 있고 두 번째 대괄호는 이 익명 함수를 호출하는 데 사용됩니다. 두 번째 대괄호에 필수 매개변수를 전달할 수 있습니다. 예:
코드는 다음과 같습니다.
(function( x , y ){
경고( x y);
})(2,3);