【发布时间】:2021-01-14 03:17:36
【问题描述】:
我遇到了一个问题,我们希望编写一个 JS 函数“func”,该函数的行为如下所示
func("world") --> returns --> hiworld
func()("world") --> returns --> hiiworld
func()()("world") --> returns --> hiiiworld
func()()()("world") --> returns --> hiiiiworld
func()()()()("world") --> returns --> hiiiiiworld
func()()()()()("world") --> returns --> hiiiiiiworld
因此,它必须是可调用的,我们需要根据调用的次数在 hi 和 world 之间添加“i”。我能够编写如下代码:-
function parent () {
let mid = ''
function func(param) {
if(param) {
let str = 'hi' + mid + param
mid = ''
return str
}
mid += 'i'
return func
}
return func
}
let func = parent()
但我无法满足测试用例:-
func() --> returns func
func()("world") --> returns --> hiiworld
我们不应该再次定义 func 变量。基本上,我们需要一种方法来跟踪在链接机制中调用 func 时调用的次数。新呼叫应从开始计算。任何人都可以就我们如何实现这种行为提出一些想法吗?
【问题讨论】:
-
func() 的预期输出是什么?
-
如果函数的最后一个参数是字符串,它必须是字符串。对于没有参数,它只能是那个函数
-
查看@JohnOyegbite 的答案,我很确定它非常适合您的需求
标签: javascript closures method-chaining