Node.js関数

2333 ワード

Node.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);