質問: eval("this"); ``` ???? --- 理解できないので、質問追記します。 間接的に呼び出す、という意味は、カンマ演算子を処理すると ``` (evalを評価した結果)("this"); ``` となるので、 ``` eval("this"); ``` とは異なる、ということでしょうか? つまり、一旦変数eに入れず、(evalを評価した結果)("this");するってこと? evalを評価した結果は、function eval() なので、function eval()("this");と同義? 最終的には、 ``` eval("this"); ``` と、 ``` function eval()("this"); ``` の違い、ということでしょうか?
回答: リンク先では*別名を付ける*とも表現されていますが、セクション名にある*indirect eval call*を行うことが重要です。*indirect*はdirectの否定形ですが、ECMAScript 5では`eval`はDirect Callか否かで動作が変わる仕様となっているので`eval(x)`を直接呼ばない構文にしているのです。 質問の追記について `eval==('global', eval)`と試してみれば分かると思いますが、式の値としては等価だが文法上`eval(x)`という形式の直接呼出しは特別扱いをするということだと思います。