javascript - 快速处理函数参数执行

标签 javascript node.js function express parameters

快速路线设置如下

var users = require('../../app/controllers/users.server.controller');
// Set up the 'signout' route
app.get('/signout', users.signout);

但是,由于括号不存在,这意味着函数 users.signout 被传递但没有执行?

github上的文件可以找到here

users.signout 函数如下所示

// Create a new controller method for signing out
exports.signout = function(req, res) {
    // Use the Passport 'logout' method to logout
    req.logout();

    // Redirect the user back to the main application page
    res.redirect('/');
};

github上的文件可以找到here

为什么要执行users.signout? req 和 res 参数是如何传递的?

最佳答案

当您使用时

app.get('/signout', users.signout);

Express.js 基本上在内部存储给定的函数 users.signout 并保持与 /signout 路径的关联。

当在此路由上发出请求时,Express.js 将获取相应的存储函数并调用它,大致形式如下:

// `storedFunction` corresponds to your `users.signout` function
storedFunction(expressReq, expressRes, expressNextCallback);

如果你要在调用中调用users.signout函数,即

app.get('/signout', users.signout());

您将无法获取 reqres 参数,并且 users.signout 函数实际上会立即执行,这意味着 app.get 函数实际上会接收函数的结果

您可以阅读有关此的更多信息 in the documentation 。希望对您有帮助!

关于javascript - 快速处理函数参数执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34158327/

相关文章:

javascript - 理解 javascript 闭包

javascript - 对象如何等于空字符串?

javascript - 在新的浏览器选项卡中打开 ppt 文件

javascript - 无法在另一个 js 文件中加载自定义 Mongoose 架构

java - maxOccuringDigit() 函数的时间和空间复杂度是多少?

javascript - UI GRID - 自定义单元格模板代码分离

javascript - 为什么 Istanbul/tap 代码覆盖在覆盖每个条件路径时报告 switch 语句未覆盖?

javascript - 类型错误处理

JavaScript 函数只影响带有类的第一个 div

php - 将多个参数传递给函数 php