在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