Я хочу понять функцию двойного возврата в Javascript
Я рассмотрел другие вопросы, которые задавали в SF относительно заявления о возврате, но я не смог понять из него смысл.
Итак, я пытался понять HOC в реакции, когда наткнулся на статью о среде.
Автор написал эту строчку кода в своем примере.
const yell = (PassedComponent) =>
({ children, ...props }) =>
<PassedComponent {...props}>
{children.toUpperCase()}!
</PassedComponent>
const Title = (props) => <h1>{props.children}</h1>
const AngryTitle = yell(Title)
<AngryTitle>Whatever</AngryTitle>
//=> <h1>WHATEVER!</h1>
Наш HOC (Yell) здесь также можно вернуть как
const yell = PassedComponent => ({children, ...props}) => {
return (
Поскольку есть две стрелочные функции и что-то вроде этого после первой стрелочной функции ({children, ...props}), я думаю, что это функция двойного возврата HOC.
[Вопрос]: Может кто-нибудь объяснить мне двойной возврат или код выше ?.
@blex в любом случае, не могли бы вы подробно объяснить вышеупомянутый вопрос?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


const foo = arg1 => arg2 => arg1 + ar2;
Это функция, которая возвращает другую функцию и аналогична следующей:
function foo(arg1){
return function(arg2){
return arg1 + arg2
}
}
Чтобы получить внутреннее возвращаемое значение, вам нужно сделать
foo(input1)(input2)
Или вариант, в котором вы сохраняете возвращенную функцию с начальным вводом и используете ее снова
var f1 = foo(input1)
console.info(f1(input2))
console.info(f1(input3))
Во-первых, чтобы было понятнее, давайте воспользуемся полным синтаксисом, используя фигурные скобки и операторы return:
const yell = (PassedComponent) => {
return ({ children, ...props }) => {
return (
<PassedComponent {...props}>
{children.toUpperCase()}!
</PassedComponent>
);
};
}
Да, слово return используется дважды. Но здесь есть две функции. И у каждого есть только одно заявление return.
Внешний принимает компонент в качестве параметра и возвращает функцию. Эта функция теперь является компонентом (да, компоненты - это функции), который может быть создан с дочерними элементами и реквизитами.
Это не совсем двойная отдача. Это функция, которая возвращает другую функцию. Это будет от похожий(не совсем эквивалент) до
function yell(...){ return function(...){ return ...; } }