Я пытаюсь передать аргумент функции внутри функции;
function add() {
let x = arguments[0];
function s(num) {
return num + x;
}
}
add(2)(3) //second argument to be passed to 'function s'.
поэтому им нужно, чтобы звонок вернулся 5.
Каков наилучший подход к этому? заранее спасибо.
Currying - это название конструкции, которая позволяет частично применять аргументы функции. Это означает, что вместо передачи нескольких аргументов функции и ожиданий конечного результата вы можете передать подмножество этих аргументов и вернуть функцию, ожидающую остальных средств.
Как уже указывал @KevBot, ваш пример пропускает возврат второй функции и будет:
function add() {
let x = arguments[0];
return function s(num) {
return num + x;
}
}
add(2)(3);
ES6 Curryed Hello World:
curryedHelloWorld = (greeting) => (name) => '${greeting}, ${name}!';
curryedHelloWorld("Hello")("Tygar");
Вы даже можете раскрутить пример curryedHelloWorld, обратившись к нему наоборот:
helloworld = (greeting, name) => curryedHelloWorld(greeting)(name);
helloworld("Hello", "Tygar");
[javascript] currying
возвращает более 1000 результатов, наверняка один годится как дубликат? Мне не ясно, хочет ли ОП карри или цепочки. Может быть, Variadic карри функция суммы ?
add(1)(2)(3)(4)
.