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 & ...
随机推荐
- C#非常重要基础之多态
前几天看了一位同志的博客,写的是关于他自己去支付宝面试的经历.过程大体是这样的:问答的时候,前面部分,作者都应答如流,说起自己经验如何之丰富,最后面试官问了作者一个问题:请简述多态的概念和作用.结果这 ...
- MongoDB下载安装与简单增删改查
Windows下MongoDB的安装和配置.启动和停止 下载地址:MongoDB的官方下载网址是:https://www.mongodb.org/downloads 安装步骤1. 点击下载的mongo ...
- fluent-ffmpeg 常用函数
最近项目频繁用到fluent-ffmpeg,将目前使用到的函数进行总结. 首先引入fluent-ffmpeg模块: var ffmpeg = require('fluent-ffmpeg'); 1.函 ...
- .NET Core采用的全新配置系统[3]: “Options模式”下的配置是如何绑定为Options对象
配置的原子结构就是单纯的键值对,并且键和值都是字符串,但是在真正的项目开发中我们一般不会单纯地以键值对的形式来使用配置.值得推荐的做法就是采用<.NET Core采用的全新配置系统[1]: 读取 ...
- CRL快速开发框架系列教程二(基于Lambda表达式查询)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- Oracle体系结构总结
1.Oracle 体系结构摘要图 2.Oracle 体系结构相关笔记 1.Oracle 体系结构摘要图 2.Oracle 体系结构相关笔记 可参考Oracle Architecture系列随堂笔记: ...
- xmpp
xmpp学习 下载: Openfire 服务器:Openfire 4.0.2 客户端:Spark 2.7.7 安装 Openfire安装: 根据提示一直下一步,服务器域名设置为:localhost(p ...
- 几道web前端练习题目
在 HTML 语言中,以下哪个属性不是通用属性?A]<class>B]<title>C]<href>D]<style> 在线练习:http://hove ...
- 浅析linux内核中的idr机制
idr在linux内核中指的就是整数ID管理机制,从本质上来说,这就是一种将整数ID号和特定指针关联在一起的机制.这个机制最早是在2003年2月加入内核的,当时是作为POSIX定时器的一个补丁.现在, ...
- Jsp语法简介
1.JSP指令 jsp指令用来设置整个JSP网页想关闭的属性,如网页的编码和脚本语言等.常用的3种指令为page,include和taglib. 2.JSP声明 jsp声明用于声明JSP代表的Serv ...