LoginSignup
YmBIgo
@YmBIgo (和也 栗原)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Javascript で 括弧 が二重になっている構文

わからないこと

下のような構文を見つけたんですが、("hoge")(some_func) 部分で動くのは分かるんですが、意味が分かりません。
なんとなく、「args =>」部分の args に 2つ目の関数が代入されているのは分かるんですが、その根拠が分かりません。

function hoge(str) {
  return args => args(str)
}

function some_func(str){
  console.log(str)
}

hoge("hoge")(some_func)

関連するドキュメントはどこにあるんでしょうか?
また、どのような時にこのような書き方をするんでしょうか?

ご教授お願いします。

1

2Answer

特殊な構文ではありません。
単なる関数適用です。
hogeの返値がそれ自体関数なので(アロー演算子は分かりますね)、
そのまま引数(some_func)を与えています。

こう書けば多少は分かりやすいでしょうか。

const applyHoge = hoge("hoge");
applyHoge(some_func);

JSにおいて、関数はそれ自体が一つの値です。
数値や文字列と同様に、変数に束縛したり、
別の関数に渡したり、関数の返値として返すことができます。


試しに、元の式を順に評価していくと、こうなります。
分からない段階はありますか?

  1. hoge("hoge")(some_func)
  2. (args => args("hoge"))(some_func)
  3. some_func("hoge")
  4. console.log("hoge")
2

Your answer might help someone💌