从其他函数创建函数,但要使用预填充的参数

时间:2018-12-06 21:38:34

标签: javascript ecmascript-6

是否可以创建一个与另一个函数相同但带有预定参数的函数。 像

function f(x){
  return x
}
var f2 = //f(2);
console.log(f2()); //Should print 2

我知道这在OcamL中是可能的,所以我想知道我是否可以在JS中做到这一点。 另一种方法是

var f2 = function(){f(2)};
f2();

但是我不知道那是多么非法,以及我是否应该惧怕监狱。

3 个答案:

答案 0 :(得分:3)

选项1 -创建一个包装函数,该函数返回使用f()调用2的结果。

function f(x){
  return x
}

var f2 = () => f(2);

console.log(f2()); //Should print 2

选项2 -将Function.bind()prepended arguments结合使用:

function f(x){
  return x
}

var f2 = f.bind(null, 2);

console.log(f2()); //Should print 2

答案 1 :(得分:1)

只需使f2为一个函数即可调用 f,然后返回该调用的结果f

var f2 = function() {
    return f(2);
};

答案 2 :(得分:0)

您将要在函数内创建一个函数。

function f(x)
{
  return function() {
    return x;
  };
}

var f2 = f(2),
    f3 = f(3),
    f4 = f(4);

console.log("f2: " + f2());
console.log("f3: " + f3());
console.log("f4: " + f4());