从其他函数创建一个带有预填充参数的函数



是否可以创建一个与另一个函数相等但带有预先给定的参数的函数。类似的东西

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

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

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

但我不知道这有多违法,也不知道我是否应该害怕入狱。

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

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

选项2-使用带有前置参数的Function.bind()

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

只需使f2成为用任何您想要的方法调用f的函数,然后返回f:的调用结果

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

您需要在函数中创建一个函数。

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());