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类似,举个例子吧,大家仔细看,我写上注释了:
// 加法
function Additive(num1, num2){
console.info(num1 + " + " + num2 + " = " + (num1+num2));
}
// 减法
function Subtraction(num1, num2){
console.info(num1 + " - " + num2 + " = " + (num1-num2));
}
// 乘法
function Multiplication(num1, num2){
console.info(num1 + " * " + num2 + " = " + (num1*num2));
}
// 除法
function Division(num1, num2){
console.info(num1 + " / " + num2 + " = " + (num1/num2));
}
// 计算器,传入计算方法及两个数
function Calculator(functionName, num1, num2){
functionName(num1, num2);
}
// 传入乘法及两个参数
Calculator(Multiplication, 3, 5);
以上代码中,我们创建了四个方法,都是传入两个参数,然后进行对应的计算,最后输出计算结果。
重点是最后一个函数Calculator(),这个函数需要三个参数:functionName、num1、num2。
functionName表示需要运行的函数名称,注意表示的不是传入函数的返回值,而是函数本身!
然后在里面(L23行)使用传入的函数进行运算。最后,27行,我们调用Calculator()函数,传入乘法函数及两个参数。
运算结果如下:

Node.js匿名函数:
我们可以把一个函数作为变量传递。
但是我们不一定要绕这个"先定义,再传递"的圈子,我们可以直接在另一个函数的括号中定义和传递这个函数:
function execute(someFunction, value) {
someFunction(value);
}
execute(function(word){ console.log(word) }, "GuYing");
上述代码中,我们创建了一个execute函数,需要两个参数,函数功能是:将第二个参数传递进入第一个函数参数中运行。
然后,我们在第5行,调用execute函数,传入一个匿名函数及一个参数。匿名函数表达的含义是将传入的word参数输出。第二个参数是“GuYing”。
那么结合execute的作用,运行结果如下:

用这种方式,我们甚至不用给这个函数起名字,这也是为什么它被叫做匿名函数 。
有点小绕,呵呵,大家不要晕,结合.NET/Java,实在不行,结合Javascript去理解就OK了。
函数传递是如何让HTTP服务器工作的:
回顾我们第3节说的创建HTTP服务器:
var http = require("http");
http.createServer(function(request, response){
response.writeHead(200, {"Content-Type":"text/plain"});
response.write("Hello World!");
response.end();
}).listen(88);
这里我们使用http对象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(88);
其实,每当我们发送请求的时候,都会执行一次onRequest,大家可以在里面使用 console.log("A request has be in."); ,然后去重复请求页面。看看效果。呵呵。
小结:
还是那句话:
有点小绕,呵呵,大家不要晕,结合.NET/Java,实在不行,结合Javascript去理解就OK了。
好了,感谢大家的支持,如果觉得不错,就点个赞吧。(*^_^*)您的支持就是我的动力。
Node.js 教程 06 - 函数的更多相关文章
- Node.js 教程 01 - 简介、安装及配置
系列目录: Node.js 教程 01 - 简介.安装及配置 Node.js 教程 02 - 经典的Hello World Node.js 教程 03 - 创建HTTP服务器 Node.js 教程 0 ...
- Node.js 教程 04 - 模块系统
前言: Node.js的模块系统类似于C/C++的文件引用,可以声明对象,也可以定义类 创建对象. 大家这么理解,就简单了. 定义: 为了让Node.js的文件可以相互调用,Node.js提供了一个简 ...
- 【转载】Node.js 教程(菜鸟教程系列)
很好的一篇教程:Node.js 教程 简单做下笔记 概述 简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立 ...
- 10+ 最佳的 Node.js 教程和实例
如果你正在找Node.js的学习资料及指南,那么请继续(阅读),我们的教程将会覆盖即时聊天应用.API服务编写.投票问卷应用.人物投票APP.社交授权. Node.js on Raspberry Pi ...
- Node.js教程系列~目录
Node.js这个东西在近几年火起来了,而且会一直火下去,无论在infoq还是在cnblogs,csdn上,都可以到处看到它的样子,它主推的应该就是异步式I/O 吧,是的,设计的很完美,很吸引人,虽然 ...
- [整理]Node入门 » 一本全面的Node.js教程 - Demo实践所遇到的问题
花了一个上午看完[转载]Node入门 » 一本全面的Node.js教程 根据里面的Demo自己手动实现过程中还是遇到了些问题,特整理在此. <1>.由于node.msi安装包已经自动添加了 ...
- 实用的 Node.js 教程,工具和资源
这里分享一批实用的实用的 Node.js 教程,工具和资源. Node.js是一个建立在Chrome之上的JavaScript运行时平台,可方便地构建快速,可扩展的网络应用程序.Node.js使用事件 ...
- 专门针对初学者的Node.js教程
转载原文:http://www.csdn.net/article/2013-08-28/2816731-absolute-beginners-guide-to-nodejs Node.js的教程并不缺 ...
- [转载]Node入门 » 一本全面的Node.js教程
http://www.nodebeginner.org/index-zh-cn.html 作者: Manuel Kiessling 翻译: goddyzhao & GrayZhang & ...
随机推荐
- Html5 直接插入排序
直接插入排序算法(Straight Insertion Sort),是排序算法中简单的一种算法,基本思想如下: 将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表.即:先将序列的第 ...
- 将自己打代码添加到cocoapods
1,Github 上创建新站点 2, 从gitHub上 clone 一份,将源码拷贝到该目录下提交3,开源库发布之后,需要打上tag git tag 0.0.1 git push --tags git ...
- Android开发学习之路-3DTouch效果模仿
3D Touch是什么效果的大家应该都知道了.什么?不知道,那也没办法呀,我也没有iPhone 6s演示给你看的. 本篇博客要做的效果图: 来个低质量动图: 这个动图效果不是很好,实际上模糊效果应该是 ...
- 游戏服务器菜鸟之C#初探四游戏服务
经过多次折腾之后,在一次进行了一次重大的重构,去解决问题 主要重构如下 1.将原来的单一协议修改多协议进行,一些查询.认证的功能都采用HTTP进行,避免全部采用TCP链接资源的消耗: 2.原来单一的部 ...
- ElasticSearch 5学习(5)——第一个例子(很实用)
想要知道ElasticSearch是如何使用的,最快的方式就是通过一个简单的例子,第一个例子将会包括基本概念如索引.搜索.和聚合等,需求是关于公司管理员工的一些业务. 员工文档索引 业务首先需要存储员 ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(12)-系统日志和异常的处理②
系列目录 上一讲我们做了日志与异常的结果显示列表,这一节我们讲要把他应用系统中来. 首先我们在App.Common类库中创建一个通用类ResultHelper,这个类里面写了,获取一个GUID,获取当 ...
- 从零开始编写自己的C#框架(19)——Web层后端权限模块
不知不觉本系统写了快三个月了,最近写页面的具体功能时感觉到有点吃力,很多地方如果张嘴来讲的话可以说得很细,很全面,可写成文字的话,就不太会写了,有些地方想讲得清晰的话,得用多几倍的文字+实例+变化中的 ...
- 计算机程序的思维逻辑 (51) - 剖析EnumSet
上节介绍了EnumMap,本节介绍同样针对枚举类型的Set接口的实现类EnumSet.与EnumMap类似,之所以会有一个专门的针对枚举类型的实现类,主要是因为它可以非常高效的实现Set接口. 之前介 ...
- Js ==和===的区别
===判断: Undefined === Undefined,返回 true Null === Null,返回 true null == undefined,返回 false NaN === NaN, ...
- Android动画:模拟开关按钮点击打开动画(属性动画之平移动画)
在Android里面,一些炫酷的动画确实是很吸引人的地方,让然看了就赏心悦目,一个好看的动画可能会提高用户对软件的使用率.另外说到动画,在Android里面支持3种动画: 逐帧动画(Frame Ani ...