在学习JavaScript时,我对如何调用某个函数(可能是Clousre)感到困惑。我以前使用过Java。
当我编写诸如koa2的中间件时,我写:
async function gzip(ctx, next) { }
如果我们需要选择:
function gzipWithOption(option){
return async function gzip(ctx, next) { }
}
或:
module.exports = options => {
return async function gzip(ctx, next) { }
}
我的困惑是,koa2或其他编译器系统如何知道是否应调用:
theDarkFunc(param)
或:
theDarkFunc(option)(param)
程序员如何知道这一点?仅通过阅读文档?
答案 0 :(得分:1)
我没有使用koa2或其他节点服务器框架的经验,但是确定一个函数返回的值是另一个函数还是常规值在JavaScript运行时是完全可行的。
例如,假设您有一个名为if ( s[0] == 'F' || s[0] == 'f' )
的函数,该函数返回某些内容,但您之前并不知道。在这种情况下,我们可以检查返回的值并相应地执行操作。
f
您还可以使用f = () => { ... }
val = f()
// you don't know the type of val, so let's find out
if (val instanceof Function) {
// val is a function, so you handle it in one way
} else {
// val is not a function, so you handle it in another way
}
,如果typeof f()
返回的值是一个函数,则返回'function'
(请注意f()
返回一个字符串,因此带引号围绕“功能”一词)
typeof