使用JavaScript中的参数保存对函数的引用

时间:2019-06-10 10:16:05

标签: javascript

我正在应用程序中的多个位置调用函数。此函数采用多个参数,其值可能会更改。为了避免重新键入,我想保存对此函数的引用,以便可以在任何地方简单地调用此引用函数。这是简化的代码:

const func1 = (a,b,c) => a + b + c; 
let a = 1, b = 2, c = 3;
const func2 = func1.bind(this, a, b, c);
func2();
//prints 6
c = 6;
func2();
//still prints 6!

如何通过调用func1使a生成bcfunc2的更新值才能执行?

4 个答案:

答案 0 :(得分:3)

使用箭头功能:

const func1 = (a,b,c) => a + b + c; 
let a = 1, b = 2, c = 3;
const func2 = () => func1(a, b, c);
console.log(func2());
c = 6;
console.log(func2());

答案 1 :(得分:0)

您可以改为将函数绑定到[a, b, c]的数组,然后更改索引2处的属性:

const func1 = (a,b,c) => a + b + c; 
const params = [1, 2, 3];
const func2 = () => func1(...params);
func2();
params[2] = 6;
func2();

如果仅更改c,则可以考虑将函数绑定到ab,然后传递更改的c

const func1 = (a,b,c) => a + b + c; 
const params = [1, 2];
const func2 = (c) => func1(...params, c);
func2(3);
func2(6);

答案 2 :(得分:0)

如果要在声明函数的范围内使用参数,只需跳过函数签名中的那些参数

const f = () => a + b + c;
let a = 1, b = 2, c = 3;
console.log(f());
c = 6;
console.log(f());

答案 3 :(得分:0)

代替此const func2 = func1.bind(this, a, b, c);

您可以使用此功能(箭头):const func2 = () => func1(a, b, c);