2016-03-26 6 views
0

コンパイルフェーズ(そのレキシカルスコープダイアグラム全体が設定されている)に実行シナリオ(コンパイルフェーズでレキシカルスコープ設定を使用してコードが実行される)関数式の設定については?コンパイル中か実行中か解釈中か?関数式の字句スコープ

また、関数式のスコープが設定されているときはいつも、親スコープは常にグローバルスコープの権利になりますか? (私はこれが起こったコードを見て、ただ確認したい)。

+0

私はあなたがいくつかの異なるものを混ぜ合わせているかもしれないと思います。ここには役に立つかもしれない2つの良い記事があります:[Javascript Scope and Closures](https://spin.atomicobject.com/2014/10/20/javascript-scope-closures/)、[Of Function Scope and Lexical Scoping] http://pierrespring.com/2010/05/11/function-scope-and-lexical-scoping/)。特に、呼び出し、バインド、および適用についての部分に注意してください。 – paulsm4

答えて

0

スコープを関数の階層と考える方が簡単です。最初の関数a()を定義している場合、親スコープはグローバルスコープになります。 a()で定義された各関数は、a()のスコープとグローバルスコープの両方にアクセスできます。関数のツリー内のすべての子孫は親スコープにアクセスでき、ルートはグローバルスコープになります

2

関数のスコープは、関数が作成されるときに設定されます。解析段階ではありません。

+0

関数式のスコープは実行時に設定されています(これは私の質問のコンパイル段階に対応しています)。可能であれば、これを言及するリンク/記事を送ってください。 –

+2

JSはコンパイラが最適化されたインタプリタ言語であるため、「フェーズ」はあまり意味がありません。 ASTに解析してから実行します。機能の設定と本体のコンパイルが含まれます。 – Bergi

-1

実際にいくつかのリンクが見つかりました[1][2]はこれに関する良い説明がありました。関数式はコンパイル時にスコープに設定されているように、関数式の(RHS)は実行時に解釈されるようです。

関連する問題