嘿,我当然是在学习Node,因为他们使一些变量等于函数
类似这样
INFO: Ephemeral certificate for Cloud SQL instance MYINSTANCE is about to expire, obtaining new one.
然后他们在中间件中调用它
const authCheck = (req, res, next) => {
if (req.user) {
next()
} else {
res.redirect("http://localhost:3000/")
}
}
现在,我通常看到人们调用这样的函数router.post("/", authCheck, (req, res) => {
虽然可行,但我想了解两者之间的区别
答案 0 :(得分:1)
router.post("/", authCheck, (req, res) => {
该行实际上并未调用该函数。它将函数作为变量传递给router.post()
函数。
一旦请求到达路由器功能,该路由器功能就会及时调用authCheck。
因此,正确的是,通过在函数名称后面写入()
来调用函数。
请记住,函数就是所谓的“一流”,这意味着它们可以用作参数,并且可以随变量传递。
如果您要编写router.post("/", authCheck(), (req, res) => {
,而不是将authCheck函数传递到路由器中,则应立即调用authCheck并将authCheck的返回值传递到router.post()中。