新手问题,参数位置不能改变
发布于 10 年前 作者 happywowwow 4385 次浏览 最后一次编辑是 8 年前
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里.

回到顶部