在Javascript中返回带有预先分配的常量的函数

在Javascript中返回带有预先分配的常量的函数,javascript,Javascript,我想做一个返回函数的函数 const f=(值)=>{ return(input)=>(value除了使用eval之外,您几乎做到了这一点 const f = (value) => { return (input) => (value <= input); }; const isGreaterThanOrEqualTo3 = f(3); console.log(isGreaterThanOrEqualTo3(4)); // logs out true console.l

我想做一个返回函数的函数

const f=(值)=>{

return(input)=>(value除了使用eval之外,您几乎做到了这一点

const f = (value) => {
  return (input) => (value <= input);
};

const isGreaterThanOrEqualTo3 = f(3);

console.log(isGreaterThanOrEqualTo3(4)); // logs out true
console.log(isGreaterThanOrEqualTo3(2)); // logs out false
const f=(值)=>{
返回(输入)=>(值调用“预分配常数”的过程

您可以使用Function的prototype方法自己执行此操作,例如:

您还可以使用有用的第三方库,如或方法

上述示例不起作用的原因是
f(3)
返回一个函数。调用
toString
将为您提供该函数体的字符串表示

当您调用
f(3)
的结果时,它将
eval
字符串,但带有一个闭包,其中定义了
value
,值为
3
。由于您在字符串上调用
eval
,因此它正在全局范围中查找名为
value
的命名变量

如果你不知道我指的是什么,我建议你仔细阅读,这方面有很多资源

我希望这是朝着正确的方向迈出的一步,如果有不清楚的地方,请写一条评论:)

而不是
f(3)。toString()
您可以存储
f.toString()+'(3)


f=value=>input=>value为什么
toString
/
eval
?为什么不仅仅是
f(3)(4)
?@melpomene我正在制作一种代码生成器。我试图保存
f(3)返回的函数代码
到'some.js'。我的目标是'some.js'的用户在使用它时不必知道
f
的参数。如果需要3作为字符串的文字部分,那么让
f
返回字符串。
f=(val)=>(input)=>('+val+'@NicholasTower Yes。我可以
`return(input)=>(${value}如果要从实函数生成字符串,则它将包含该函数的文本。字符串中不包含词汇信息。您似乎有相互排斥的要求。
const add = (x, y) => x + y
const add3 = add.bind(null, 3)
add3(4) // === 7