JavaScript有两个特征,首先他是一门解释性语言,压根没有编译一说,只有预编译。其次他的执行是单线程的,只能按部就班的一句句执行。
JavaScript的执行过程分为三步,首先是语法/语义分析,找出问题,例如缺个大括号什么的,接下来是预编译,最后是解释执行。在讲预编译之前,先说四点知识。
- 全体的な関数宣言を強化
- 変数宣言のアップグレード(ちょうどアップグレード文を注意してください)
- 宣言されていない割り当て、グローバル変数によって所有:グローバルヒントグローバル変数を意味します。
- すべてのグローバル変数は、グローバルオブジェクトを行く宣言し、ウィンドウがグローバルドメインであります
プリコンパイルされた関数が実行の瞬間前に発生し、プリコンパイルされtetralogyがあります。
- AOは、オブジェクト(コンテキストのアクティベーションオブジェクトの実行)を作成します
- フォーム見つけるAO属性名として変数宣言、パラメータ名と変数に参加し、値が定義されていません
- Unityに参加し、実際のパラメータ
- 関数内の関数宣言を検索し、関数本体に割り当てられた値
関数全体の環境では、彼の世代は、ウィンドウオブジェクト、通常の状況下で、無段階の別の名前であるオブジェクトGOは、あることを除いて。
それは真実をテストするための唯一の基準である:
いくつかの栗:
:2年Baiduの顔質問13(シンプル)を初めて目
AO {
FOO:undefined->機能; - > 10-> 11。
}
AO {
FOO:undefined- >関数
}
テーブルに感じ、我々はほとんど困難なければならない:
AO {
:undefined-> 1->機能- > 123
B:undefined->関数
D:関数
}
AO {
:undefined-> 1-> 3
B:undefined->機能- > 2
C:undefined-> 0
D:関数
}
AO {
B:未定義; - > 234-> 345->関数
A:不定; - > 1->機能- > 123
}
AO { A:undefined->} 20は、
GO {B:
{試験AO:undefined-> 1->機能- > 234}
GO {テスト:undefined->機能- > 123}
AO {グローバル:undefined-> 200-> 300}
GO {グローバル:未定義
のFn:}関数
AO { B:未定義}
GO {:> 10 undefined-;試験:機能; C:234}
関数内のCが、彼は、割り当てに宣言されていない、暗黙の意味はグローバル変数であり、彼が属するグローバルオブジェクトそうA。
ローは、問題の希望があることを指摘しました!