node.js(十二)

1560 ワード

ノード.js関数は、JavaScriptにおいて、他の関数のパラメータとして機能することができる.まず関数を定義してから伝達してもいいし、伝達パラメータのところで直接関数を定義してもいいです.Node.jsの関数の使用はJavascriptと似ています.例えば、このようにしてもいいです.
function say(word) {
  console.log(word);
}

function execute(someFunction, value) {
  someFunction(value);
}

execute(say, "Hello");
以上のコードでは、say関数をexecute関数の最初の変数として伝達しました.ここで戻ってくるのはsayの戻り値ではなく、say自身です.これにより、sayはexecuteのローカル変数someFunctionとなり、executeは、someFunction()を呼び出すことによってsay関数を使用することができる.もちろん、sayには変数がありますので、executeはsomeFunctionを呼び出したときにこのような変数を伝えることができます.匿名関数は変数として関数を伝えることができます.しかし、私たちは必ずしもこの「先に定義し、また伝達する」サークルの周りを回る必要はなく、直接に他の関数の括弧でこの関数を定義し、伝達することができます.
function execute(someFunction, value) {
  someFunction(value);
}

execute(function(word){ console.log(word) }, "Hello");
executeで最初のパラメータを受け入れるところで直接にexecuteに伝達する関数を定義した.このようにして、私たちはこの関数に名前をつけなくてもいいです.これもなぜ匿名関数と呼ばれるのですか?これらの知識を持って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);
今ははっきりと見えますが、私たちはクリアーServer関数に匿名の関数を伝えました.このようなコードを使っても同じ目的を達成できます.
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);