Javascript 变界函数参数
给出一个简单的函数:Javascript 变界函数参数,javascript,function,binding,partial,currying,Javascript,Function,Binding,Partial,Currying,给出一个简单的函数: const a = (x) => (y) => x + y 及其部分应用版本: const b = a(3) 有没有办法更改b中已绑定的参数?差不多 b.boundArgs[0] = 5 因此,如果我调用b(5),它将返回10,而不是8 一点背景: 我使用的库返回部分应用的函数,作为库函数调用的结果。 我必须修改第一个参数(由库函数应用),我不想复制粘贴此函数的实现。除了这个小小的修改,我想继续使用这个库。不,你不能这样做,除非有问题的库允许这样做。它可
const a = (x) => (y) => x + y
及其部分应用版本:
const b = a(3)
有没有办法更改b
中已绑定的参数?差不多
b.boundArgs[0] = 5
因此,如果我调用b(5)
,它将返回10
,而不是8
一点背景: 我使用的库返回部分应用的函数,作为库函数调用的结果。
我必须修改第一个参数(由库函数应用),我不想复制粘贴此函数的实现。除了这个小小的修改,我想继续使用这个库。不,你不能这样做,除非有问题的库允许这样做。它可以,但可能不会 基本上,您要问的是,是否可以进入函数关闭的执行上下文,并在该上下文中更改变量值(更准确地说,是绑定)。默认情况下,您不能这样做。使用更详细的示例:
const a = (x) => {
const b = (y) => x + y;
return b;
};
默认情况下,您无法使用b
来进入并更改环境b
关闭时的x
早些时候我说图书馆可以让你这么做,但可能不会。有一种方法可以做到这一点:
const a=(x)=>{
常数b=(y)=>x+y;
b、 changeX=(newX)=>{
x=newX;
};
返回b;
};
常数b=a(3);
b、 changeX(10);
console.log(b(5));//15而不是8
No,在您的示例中没有办法做到这一点。初始函数在哪里调用?你必须修改that@JonasW. 初始函数是在库中调用的,所以我不能修改它,那么它是不可能的:/@Pointy这意味着唯一的方法就是复制库实现并修改它?