假设我已经定义了如下函数:
const addX = (y) => x + y
很明显,函数体内的x
是一个自由变量。
如果我想在x
定义后指定addX
的值,并保留不使用this
和with
的原则,是否有任何可行的方法?
当我们在JavaScript中设计EDSL时,这非常有用。
注意:我知道我们可以做类似的事情如下:
const add = (x) => (y) => x + y
const addX = add(1)
但就我而言,addX
的定义已经完成,因此无效。
答案 0 :(得分:0)
您可以为全局变量赋值并调用该函数。
var addX = y => x + y, // global scope
x, // global scope
add = xx => y => { // get all values
x = xx; // assign to global x
return addX(y); // call fn with y and take global x
};
console.log(add(10)(32));