Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 变界函数参数_Javascript_Function_Binding_Partial_Currying - Fatal编程技术网

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这意味着唯一的方法就是复制库实现并修改它?