Kyle Simpson によるYou don't know JSのScopes and Closureタイトル、特にこのトピックCompiler Speakを読んでいました。このセクションでは、エンジンが使用するルックアップの種類について説明します。これで、このセクションで説明した範囲で、LHS または RHS ルックアップとは何かを理解できました。
私の問題は、フォームの関数宣言がfunction fx(a) {..
LHS ルックアップではないというメモです。同じ説明がありますが、理解できません。全メモはこちら
関数宣言 function を、 や などの通常の変数宣言と代入として概念化する誘惑に駆られるかもしれませ
foo(a) {...
ん。そうすることで、この関数宣言が LHS ルックアップを含むものと考えたくなるでしょう。ただし、微妙ではありますが重要な違いは、コンパイラがコード生成中に宣言と値定義の両方を処理することです。これにより、エンジンがコードを実行するときに、関数値を に「割り当てる」ための処理が必要なくなります。したがって、ここで説明している方法で、関数宣言を LHS ルックアップ代入と考えるのは適切ではありません。var foo
foo = function(a){...
foo
どんな種類の明確化も役に立ちます。LHS および RHS ルックアップでも。