新手问题,参数位置不能改变
var aa = function(err, req, res, next) {
res.render('error', {
message: err.message,
error: err
});
};
if (app.get('env') === 'development') {
app.use(aa);
}
以上第一行的代码,是不是不能交换参数位置成为以下的代码
var aa = function( req, err, res, next) {
res.render('error', {
message: err.message,
error: err
});
};
为什么这个参数位置是err, req, res, next固定的? 以及另外一个function( req, res, next)也是不能换位置的? 不知道为什么
还有,可以解释一下next的作用么?举个例子?
5 回复
1、位置不能变换,因为js是通过位置index来判断是什么参数的,后面的参数可以不写,但是顺序不可变化,等你自己写给别人用的函数的时候就知道了; 2、next是回调函数呀,当这个函数的工作做完了,可以继续下一个任务了呀 这样就可以传递下去
var aa = function(err, req, res, next) {
res.render('error', {
message: err.message,
error: err
});
next();
};
if (app.get('env') === 'development') {
app.use(aa);
}```
那为什么不这么写,就是给aa里面加上这个回调next
这些内置的核心模块的参数已经是确定了的,肯定是不能改变的,除非你自己写模块。如果你说为啥不这样写?这个你就要去问模块开发人了- -。
位置不能改变,这个属于js范畴,好好加强一下基础知识
理论上可以, 仿angularjs的机制实现一个包装函数, 把调用函数toString后取出参数重排整理. 每次都包一下, 或者注入app.use里.