JavaScript箭头函数问题,语法问题
Posted
技术标签:
【中文标题】JavaScript箭头函数问题,语法问题【英文标题】:JavaScript Arrow Function question, syntax problem 【发布时间】:2021-04-14 18:14:43 【问题描述】:首先,抱歉标题含糊不清,如果不直接显示,我真的不知道如何解释。我是 javascript 新手,一直在学习箭头函数,但是我不认识这种类型的箭头函数/语法。
目前,我正在创建一个网站,并使用带有猫鼬的护照添加会话 cookie。我正在使用的教程使用箭头函数的方式非常奇特,无法在线找到任何与语法有关的信息。
这是简化的代码
foo(bar)(()=>
... Code Here ...
);
我了解箭头函数,但我不明白括号在这种情况下是如何工作的以及到底发生了什么?
|
V
foo(bar)(...)
我无法在网上找到任何关于此的信息,而且很奇怪,当我在教程中运行该函数时,它运行时没有任何错误,但是,如果我使用类似这样的方法来执行此操作,
function foo()
console.log("In foo");
foo()(()=>
console.log("In bar");
);
我会得到一个错误提示
foo is not a function
如果需要,实际运行的代码将在下方
(此代码在服务器上运行,req 是发送到 GET 请求的请求数据,我在这里使用护照 JavaScript 和猫鼬。 res 变量是对用户的响应,是的,此代码可以正常工作很好,没有错误,它做了它需要做的事情,我只是不明白这个语法是如何工作的)。
req.authenticate("local")
((req, res)=>
res.redirect("/");
);
【问题讨论】:
相关:"What do multiple arrow functions mean in javascript?" 【参考方案1】:你有一个函数foo
被调用一个参数bar
,它返回一个以箭头函数作为参数的函数。
因此,栏后的左括号是您调用foo
返回的函数的位置。
function foo(bar)
console.log(bar);
return function(arrow)
arrow();
foo('bar')( ()=>
console.log("In bar");
);
【讨论】:
【参考方案2】:req.authenticate("local")
正在返回一个接受另一个函数的函数,你可以这样想:
// foo can be viewed as a function because the return value from
// req.authenticate("local") is a function
const foo = req.authenticate("local");
现在,如果您将 foo
视为常规函数,那么 foo(bar)
应该是您熟悉的语法
语法有效是因为req.authenticate("local")
正在返回一个函数,因此您可以使用后续参数调用它。
但是,在您的自定义代码中
function foo()
console.log("In foo");
您没有返回函数,而是隐式返回undefined
。结果,后续调用会报错。
【讨论】:
感谢您的评论!如果我有足够的积分,我会投票赞成评论,谢谢! 没问题,很高兴它有帮助以上是关于JavaScript箭头函数问题,语法问题的主要内容,如果未能解决你的问题,请参考以下文章