如何在不使用"和#34;或者"这个"?

时间:2018-01-20 13:54:33

标签: javascript closures

假设我已经定义了如下函数:

const addX = (y) => x + y

很明显,函数体内的x是一个自由变量。

如果我想在x定义后指定addX的值,并保留不使用thiswith的原则,是否有任何可行的方法?

当我们在JavaScript中设计EDSL时,这非常有用。

注意:我知道我们可以做类似的事情如下:

const add = (x) => (y) => x + y
const addX = add(1)

但就我而言,addX的定义已经完成,因此无效。

1 个答案:

答案 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));