전문가들은 우회를합니다! 이것은 폐쇄 자체와 관련이 없으며 제목을 얻는 방법을 모르기 때문에 방금 번호를 수집했습니다. 용서하길 바랍니다!
오늘 방금 JS를 배운 친구가 나에게 코드를 주었고 왜이 방법이 실행되지 않았는지 물었다. 코드는 다음과 같습니다.
코드 사본은 다음과 같습니다.
함수 makefunc (x) {
return function () {
반환 x;
}
}
경고 (makefunc (0));
실제로, 그것이 실행되지 않는 것이 아니라, 친구는 경고가 function () {return x;}가 아닌 "0"이어야한다는 것을 의미한다는 것입니다.
스크립트가 잘못 쓰여진 것이 아니라 단지 리턴을 이해하지 못하고 현재 함수에서 나오며 해당 함수에서 값을 반환한다는 것입니다. 반환 된 함수가 함수 인 경우 리턴 된 함수 자체도 기능 자체입니다.
위의 코드를 다음과 같이 수정할 수 있습니다.
코드 사본은 다음과 같습니다.
함수 makefunc (x) {
return (function () {
반환 x;
}) ();
}
경고 (makefunc (0) ());
함수 실행 결과를 반환하려면 먼저 기능이 실행하도록해야합니다.
코드 사본은 다음과 같습니다.
함수 makefunc (x) {
return (function () {
반환 x;
}) ();
}
경고 (makefunc (0));
익명 기능은 다음과 같습니다.
코드 사본은 다음과 같습니다.
(기능 (){
반환 x;
}) ();
첫 번째 브래킷 내부에는 익명 기능이 있으며, 두 번째 브래킷은 익명 기능을 호출하는 데 사용되며 두 번째 브래킷의 필요한 매개 변수를 전달할 수 있습니다. 예를 들어:
코드 사본은 다음과 같습니다.
(기능 (x, y) {
경고 (x + y);
}) (23);