Node.js 教程 06 - 函数

 

前言:

  本篇介绍的是Node.js中的函数,相对于上一篇会简单一点,其实和我们Javascript中的function无异

  好了,废话不多说了,我们进入正题吧。

 


 

 

Node.js函数:

【示例1:创建基本的带参函数】

  在Javascript中,我们使用function定义函数,Node.js本身语法就可以看做纯Js,所以创建函数也是一样的。

function sayHello(_name){
    console.info("Hello : " + _name);
}

sayHello("GuYing");

  上述代码中,我们创建了一个最基本的带参函数,然后在下面调用,传入所需参数,运行结果如下:

技术分享

 

【示例2:函数作为参数传递】

  在Javascript中,一个函数可以作为参数传入另一个函数中。我们可以先定义一个函数,然后传递,也可以在传递参数的地方直接定义函数。

  Node.js中函数的使用与Javascript类似,举个例子吧,大家仔细看,我写上注释了:

 1 // 加法
 2 function Additive(num1, num2){
 3     console.info(num1 + " + " + num2 + " = " + (num1+num2));
 4 }
 5 
 6 // 减法
 7 function Subtraction(num1, num2){
 8     console.info(num1 + " - " + num2 + " = " + (num1-num2));
 9 }
10 
11 // 乘法
12 function Multiplication(num1, num2){
13     console.info(num1 + " * " + num2 + " = " + (num1*num2));
14 }
15 
16 // 除法
17 function Division(num1, num2){
18     console.info(num1 + " / " + num2 + " = " + (num1/num2));
19 }
20 
21 // 计算器,传入计算方法及两个数
22 function Calculator(functionName, num1, num2){
23     functionName(num1, num2);
24 }
25 
26 // 传入乘法及两个参数
27 Calculator(Multiplication, 3, 5);

  以上代码中,我们创建了四个方法,都是传入两个参数,然后进行对应的计算,最后输出计算结果。

  重点是最后一个函数Calculator(),这个函数需要三个参数:functionName、num1、num2。

  functionName表示需要运行的函数名称,注意表示的不是传入函数的返回值而是函数本身

  然后在里面(L23行)使用传入的函数进行运算。最后,27行,我们调用Calculator()函数,传入乘法函数及两个参数。

  运算结果如下:

技术分享

 


 

 

Node.js匿名函数:

  我们可以把一个函数作为变量传递。

  但是我们不一定要绕这个"先定义,再传递"的圈子,我们可以直接在另一个函数的括号中定义和传递这个函数:

1 function execute(someFunction, value) {
2   someFunction(value);
3 }
4 
5 execute(function(word){ console.log(word) }, "GuYing");

  上述代码中,我们创建了一个execute函数,需要两个参数,函数功能是:将第二个参数传递进入第一个函数参数中运行。

  然后,我们在第5行,调用execute函数,传入一个匿名函数及一个参数。匿名函数表达的含义是将传入的word参数输出。第二个参数是“GuYing”。

  那么结合execute的作用,运行结果如下:

技术分享

 

  用这种方式,我们甚至不用给这个函数起名字,这也是为什么它被叫做匿名函数 。

 

  有点小绕,呵呵,大家不要晕,结合.NET/Java,实在不行,结合Javascript去理解就OK了。

 


 

 

函数传递是如何让HTTP服务器工作的:

  回顾我们第3节说的创建HTTP服务器:

1 var http = require("http");
2 
3 http.createServer(function(request, response){
4     response.writeHead(200, {"Content-Type":"text/plain"});
5     response.write("Hello World!");
6     response.end();
7 }).listen(88);

  这里我们使用http对象createServer创建服务器的时候,我们传入的是一个带有请求响应的匿名函数,小动代码:

1 var http = require("http");
2 
3 function onRequest(request, response){
4     response.writeHead(200, {"Content-Type":"text/plain"});
5     response.write("Hello World!");
6     response.end();
7 }
8 
9 http.createServer(onRequest).listen(88);

 

  其实,每当我们发送请求的时候,都会执行一次onRequest,大家可以在里面使用 console.log("A request has be in."); ,然后去重复请求页面。看看效果。呵呵。

 


 

 

小结:

  还是那句话:

  有点小绕,呵呵,大家不要晕,结合.NET/Java,实在不行,结合Javascript去理解就OK了。

 

  好了,感谢大家的支持,如果觉得不错,就点个赞吧。(*^_^*)您的支持就是我的动力。

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。