Node.js 함수
JavaScript에서는 함수가 매개변수를 다른 함수로 받을 수 있습니다. 먼저 함수를 정의한 다음 이를 전달하거나 매개변수가 전달되는 위치에서 직접 함수를 정의할 수 있습니다.
Node.js의 함수 사용은 Javascript와 유사합니다. 예를 들어 다음과 같이 할 수 있습니다.
function say(word) { console.log(word); } function execute(someFunction, value) { someFunction(value); } execute(say, "Hello");
위 코드에서는 say 함수를 실행 함수의 첫 번째 변수로 전달합니다. 여기서 반환되는 것은 say의 반환 값이 아니라, say 자체입니다!
이런 식으로 say는 실행 시 someFunction이 로컬 변수가 됩니다. someFunction()(괄호 포함)을 호출하여 say 함수를 사용할 수 있습니다.
물론 say에는 변수가 있으므로, someFunction을 호출할 때 Execute는 그러한 변수를 전달할 수 있습니다.
익명 함수
함수를 변수로 전달할 수 있습니다. 하지만 우리는 이 "먼저 정의한 다음 전달" 원을 우회할 필요가 없습니다. 이 함수를 다른 함수의 괄호 안에 직접 정의하고 전달할 수 있습니다:
function execute(someFunction, value) { someFunction(value); } execute(function(word){ console.log(word) }, "Hello");
우리는 실행 위치가 첫 번째 매개변수를 허용하도록 직접 정의합니다. 실행을 위해 전달됩니다.
이렇게 하면 함수에 이름을 붙일 필요도 없기 때문에 익명 함수라고 부릅니다.
함수 전달을 통해 HTTP 서버가 작동하는 방식
이 지식을 바탕으로 단순하지만 단순하지 않은 HTTP 서버를 살펴보겠습니다.
var http = require("http"); http.createServer(function(request, response) { response.writeHead(200, {"Content-Type": "text/plain"}); response.write("Hello World"); response.end(); }).listen(8888);
이제 훨씬 더 명확해 보일 것입니다. createServer 함수에 전달합니다. 익명 함수 .
다음과 같은 코드를 사용하여 동일한 목적을 달성할 수 있습니다.
var http = require("http"); function onRequest(request, response) { response.writeHead(200, {"Content-Type": "text/plain"}); response.write("Hello World"); response.end(); } http.createServer(onRequest).listen(8888);