express는 함수를 매개변수로 사용하는 콜백 함수를 사용합니다. 이 개념을 이해하지 못하면 nodejs와 express의 코드가 엉망이 될 것입니다. 예:
app.use(function(req, res, next) { var err = new Error('Not Found'); err.status = 404; next(err); });
app은 객체이고, use는 메소드이고, 메소드의 매개변수는 매개변수가 있는 익명 함수이며, 함수 본문은 끝에 직접 제공됩니다. 이 코드를 이해하는 방법은 무엇입니까? 먼저 콜백 함수의 개념을 이해해 봅시다.
우선, js에서 함수는 변수에 할당될 수 있고 함수의 매개변수 목록에 매개변수로 배치될 수 있는 객체이기도 함을 이해해야 합니다. 예:
var doSomething = function(a,b) { return a + b; }
이 코드는 익명 함수를 정의한다는 의미입니다. 이 익명 함수에는 이름이 없다는 점만 제외하면 일반 함수와 다르지 않습니다. 그런 다음 익명 함수를 doSomething 변수에 할당합니다. 다음으로
console.log(doSomething(2,3));
를 호출하면 5가 출력됩니다.
콜백 함수는 다른 함수(예: 부모)의 매개 변수 목록에 배치되고 이 부모에 매개 변수로 전달된 다음 부모 함수 본문의 어딘가에서 실행됩니다. 추상적으로 말하면 다음 예를 살펴보세요.
// To illustrate the concept of callback var doit = function(callback) { var a = 1, b = 2, c = 3; var t = callback(a,b,c); return t + 10; }; var d = doit(function(x,y,z){ return (x+y+z); }); console.log(d);
먼저 매개변수 콜백이 있는 doit 함수를 정의합니다. 이 콜백은 콜백 함수이며 이름은 임의로 지정할 수 있습니다. 함수 본문을 살펴보면 먼저 변수 a, b, c 세 개를 정의합니다. 그런 다음 콜백 함수를 호출합니다. 마지막으로 값을 반환합니다.
다음에는 doit 함수가 호출됩니다. 참고로 지금 막 doit을 정의했을 때는 콜백이 정의되어 있지 않아 콜백이 어떤 용도로 사용되는지 알 수 없었다. 이는 사실 이해하기 쉽습니다. 일반적으로 함수를 정의할 때 매개변수에는 a와 같은 이름만 부여하고, 함수 본문에서는 a를 사용하지만, 전체 프로세스는 그것을 호출할 때만 a가 무엇인지 알지 못합니다. function 그런 다음 a의 특정 값(예: 2)을 지정합니다. 돌이켜 보면 doit을 호출할 때 콜백이 무엇인지 지정해야 합니다. 보시다시피 이 함수는 합계 함수를 완성합니다.
위 코드의 실행 프로세스는 다음과 같습니다.
doit 함수를 호출합니다. 매개변수는 익명 함수입니다. doit의 함수 본문을 입력하고 먼저 a, b, c를 정의한 다음 바로 지금 익명 함수를 실행합니다. 매개변수는 a, b, c 이고 t를 반환하고 마지막으로 d에 t+10을 반환합니다.
원래 예로 돌아가서, app.use(...)는 함수 호출입니다. use 메소드가 이전에 정의되었음에 틀림없다고 생각할 수 있지만 여기서는 제공되지 않습니다. 이 두 가지 예를 비교해보면 바로 이해할 수 있습니다.
nodejs와 express를 사용할 때 모든 메소드나 함수의 함수 정의를 찾아서 살펴보는 것은 불가능합니다. 따라서 해당 정의에서 콜백에 어떤 매개변수가 전달되는지 알아보세요. 그런 다음 메소드나 함수를 호출할 때 특정 기능을 완성하기 위해 매개변수에 익명 함수를 직접 정의합니다.
위 내용은 함수를 매개변수로 하는 자바스크립트 콜백 함수의 사용법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!