特殊な構文ではありません。
単なる関数適用です。
hoge
の返値がそれ自体関数なので(アロー演算子は分かりますね)、
そのまま引数(some_func
)を与えています。
こう書けば多少は分かりやすいでしょうか。
const applyHoge = hoge("hoge");
applyHoge(some_func);
JSにおいて、関数はそれ自体が一つの値です。
数値や文字列と同様に、変数に束縛したり、
別の関数に渡したり、関数の返値として返すことができます。
試しに、元の式を順に評価していくと、こうなります。
分からない段階はありますか?
hoge("hoge")(some_func)
(args => args("hoge"))(some_func)
some_func("hoge")
console.log("hoge")
Like!