我正在应用程序中的多个位置调用函数。此函数采用多个参数,其值可能会更改。为了避免重新键入,我想保存对此函数的引用,以便可以在任何地方简单地调用此引用函数。这是简化的代码:
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
生成b
,c
和func2
的更新值才能执行?
答案 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
,则可以考虑将函数绑定到a
和b
,然后传递更改的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);