gpt4 book ai didi

Javascript 在每个函数调用中添加到字符串

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:39:47 26 4
gpt4 key购买 nike

我遇到以下情况,我有一个函数 f,它接受一个参数 input

我希望能够让 f 满足以下输出:

f('l') --> fl

f() --> fo

f()('l') --> fol

f()()('l') --> 傻瓜

f()()()('l') --> 傻瓜

我认为这可以通过以下方式实现:

function f(input) {
let str = 'f'
if (input) {
return `${str}${input}`
}
str = `${str}o`
return f()
}

然而,这最终会陷入无限循环。我也试过让 f 返回一个函数,但这也不起作用。

如何编写 f 以获得所需的输出,同时保持函数无状态?

最佳答案

在 JS 中,您甚至可以实现函数的这种双重性,同时“成为”字符串。然而,这不是您应该在生产代码中使用的任何东西。

const f = function _f(prefix){
const toString = () => prefix;
return Object.assign(function(suffix="o"){
return _f(prefix + suffix);
}, {
valueOf: toString,
toString
});
}("f");

console.log(""+f('l'))
console.log(""+f())
console.log(""+f()('l'))
console.log(""+f()()('l'))
console.log(""+f()()()('l'))

let foo = f()();
let fool = foo("l");
console.log(""+foo("l"));
console.log(""+fool);
console.log(""+foo("bar"));
console.log(""+fool("bar"));

关于Javascript 在每个函数调用中添加到字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48184589/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com