写在前面
本篇对 Node.js 函数的概念进行讲述。
知识点
- Node.js 中的函数
- 匿名函数
- Node.js 异步编程
简介
Node.js 大部分模块都由 js 编写,所以函数的语法与 js 基本相同
Node.js中的函数
在JavaScript中,一个函数可以作为另一个函数的参数。我们可以先定义一个函数,然后传递,也可以在传递参数的地方直接定义函数。
Node.js中函数的使用与Javascript类似,代码如下:
function zxyaily(value){
console.log(value)
}
function execute(Func,value){
Func(value)
}
execute(zxyaily,'zxy❥(^_-)ly')
或者
function execute(Func,value){
Func(value)
}
execute(function(value){
console.log(value)
},'zxy❥(^_-)ly')
用这种方式,我们甚至不用给这个函数起名字,这也是为什么它被叫做匿名函数。
匿名函数
匿名函数就是没有命名的函数。语法为:
function(){
}
箭头函数
ES6 标准新增了一种新的函数,箭头函数表达式的语法比函数表达式更短,并且没有自己的 this,arguments,super 或 new.target。这些函数表达式更适用于那些本来需要匿名函数的地方,并且它们不能用作构造函数。
语法为:
(参数1, 参数2, …, 参数N) => { 函数声明 }
//相当于:(参数1, 参数2, …, 参数N) =>{ return 表达式; }
(参数1, 参数2, …, 参数N) => 表达式(单一)
// 当只有一个参数时,圆括号是可选的
(单一参数) => {函数声明}
单一参数 => {函数声明}
// 没有参数的函数应该写成一对圆括号。
() => {函数声明}
如
function(){
console.log('hello syl');
}
//上面的匿名函数可以用箭头函数改写为下面的
() => console.log('hello syl');
Node.js 异步编程
Node.js异步编程的直接体现就是回调。回调函数在完成任务后就会被调用,Node.js使用了大量的回调函数,Node.js所有API都支持回调函数。回调函数一般作为函数的最后一个参数出现。
Node.js 回调函数
Node.js 异步编程的直接体现就是回调。异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了。回调函数在完成任务后就会被调用,Node 使用了大量的回调函数,Node 所有 API 都支持回调函数。例如,我们可以一边读取文件,一边执行其他命令,在文件读取完成后,我们将文件内容作为回调函数的参数返回。这样在执行代码时就没有阻塞或等待文件 I/O 操作。这就大大提高了 Node.js 的性能,可以处理大量的并发请求。回调函数一般作为函数的最后一个参数出现:
function foo1(name, age, callback) { }
function foo2(value, callback1, callback2) { }
先创建一个 hello.txt 的文件,里面随便输入一段文本内容,比如:zxyaily。
阻塞代码实例
var fs = require("fs");
var data = fs.readFileSync('hello.txt');
console.log(data.toString());
console.log("程序执行完毕!");
执行结果
zxyaily
程序执行完毕!
非阻塞代码
var fs = require("fs");
fs.readFile('hello.txt', function (err, data) {
if (err) return console.error(err);
console.log(data.toString());
});
console.log("程序执行完毕!");
执行结果
程序执行完毕!
zxyaily