Создать функцию из другой функции, но с предварительно заполненными аргументами - PullRequest
0 голосов
/ 07 декабря 2018

Можно ли создать функцию, аналогичную другой функции, но с заранее заданными аргументами.Что-то вроде

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 голосов
/ 07 декабря 2018

Просто сделайте f2 функцией, которая вызывает f с чем угодно, тогда возвращает результат этого вызова f:

var f2 = function() {
    return f(2);
};
0 голосов
/ 07 декабря 2018

Вы захотите создать функцию внутри функции.

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());
0 голосов
/ 07 декабря 2018

Опция 1 - Создать функцию-оболочку, которая возвращает результат вызова f() с 2.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...