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了。

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

时间: 2024-10-08 20:08:52

Node.js 教程 06 - 函数的相关文章

10+ 最佳的 Node.js 教程和实例

如果你正在找Node.js的学习资料及指南,那么请继续(阅读),我们的教程将会覆盖即时聊天应用.API服务编写.投票问卷应用.人物投票APP.社交授权. Node.js on Raspberry Pi等等. 以下是Node.js入门的简单介绍,如果你对Node.js略有了解可以直接跳过此部分. 那什么是Node.js呢? Node.js是迄今运用最多的服务端JavaScript运行时环境,使用JavaScript开发跨平台的实时WEB应用. Node.js基于Google的V8 JavaScri

Node.js 教程

Node.js 教程nodejs简单的说 Node.js 就是运行在服务端的 JavaScript.Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台.Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好.谁适合阅读本教程?如果你是一个前端程序员,你不懂得像PHP.Python或Ruby等动态编程语言,然后你想创建自己的服务,那么Node.js是一个非常好的选择.No

Node.js 教程 04 - 模块系统

前言: Node.js的模块系统类似于C/C++的文件引用,可以声明对象,也可以定义类 创建对象. 大家这么理解,就简单了. 定义: 为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统. 模块是Node.js应用程序的基本组成部分,文件和模块是一一对应的. 换言之,一个Node.js文件就是一个模块,这个文件可能是Javascript代码.JSON或者编译过的C/C++扩展. 实例一: 这个实例演示的是,在hello.js中创建一个方法,然后在主程序main.js中调

Node.js 教程 01 - 简介、安装及配置

目录: Node.js 教程 01 - 简介.安装及配置 Node.js 教程 02 - 经典的Hello World Node.js 教程 03 - 创建HTTP服务器 简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好. 谁适合阅读本教程?

Node.js教程系列~目录

Node.js这个东西在近几年火起来了,而且会一直火下去,无论在infoq还是在cnblogs,csdn上,都可以到处看到它的样子,它主推的应该就是异步式I/O 吧,是的,设计的很完美,很吸引人,虽然它与正常思维是不同的,但是当你真正认识它后,也会足够的让你爱上它!Node.js确实改变了我的编程观念,改变了我对计算机系统的认识! 名人总结的话,我们应该回味个几百次 同步式I/O: 线程在执行中如果遇到磁盘读写或网络通信(统称为I/O操作),通常要耗费较长的时间,这时操作系统会剥夺这个线程的CP

node.js fs所有函数的定义和功能

表4-1 fs 模块函数表 功能 异步方法 同步方法 打开文件  fs.open(path,flags, [mode], [callback(err, fd)])  fs.openSync(path, flags, [mode]) 关闭文件  fs.close(fd, [callback(err)])  fs.closeSync(fd) 读取文件(文件描述符 )fs.read(fd,buffer,offset,length,position, [callback(err, bytesRead,

[整理]Node入门 » 一本全面的Node.js教程 - Demo实践所遇到的问题

花了一个上午看完[转载]Node入门 » 一本全面的Node.js教程 根据里面的Demo自己手动实现过程中还是需到写问题,特整理在此. <1>.由于node.msi安装包已经自动添加了系统环境变量,所以可以在任意地方路径下运行node xxx.js.<2>.确定2个环境变量是否已添加(1)一个是PATH上增加node.exe的目录C:\Program Files\nodejs,(已自动添加)(2)一个是增加环境变量NODE_PATH,值为C:\Program Files\node

node.js教程learnyounode 闯关答案

#node.js教程learnyounode 闯关答案 #ex1 console.log("HELLO WORLD"); #ex2 var sum =0; for(var i =2;i<process.argv.length;i+=){ sum+=parseFloat(process.argv[i]); } console.log(sum); #ex3 var fs = require('fs'); var pathname = process.argv[2]; //consol

hbuilder开发node.js,以及node.js的回调函数

1.hbuilder安装node.js开发插件 工具---插件安装 然后重启Hbuilder让nodeeclipse生效就行了 运行:运行方式选择node应用就可以运行node.js了. 显示出了控制台,说明nodeJS可以在Hbuilder中使用了.(PS,电脑要先安装过node.js,Hbuilder只是辅助) 2.node.js的回调函数 原文地址:https://www.cnblogs.com/xingyue1988/p/8779633.html