名前によるスコープの変数は、一連のルールを見つけることです。練習は、多くの場合、それは考慮にいくつかのスコープを取る必要です。二つの例を見て
関数FOO(A){ console.log(A)。// 2 } FOO( 2)。
このコードのプロセスは、会話を想像します
エンジン:私は、スコープを言った、私はRHSは、FOOとして参照あなたはまだそれを見ている必要がありますか? スコープ:DOは私は本当に子供はそれを宣言することをコンパイラを見てきました、言いません。それはあなたのための機能です。 エンジン:おい、あまりにも素晴らしいです!まあ、私はそれがfoo行きました。 エンジン:スコープ、事があります。私はLHSに必要なあなたはそれを見ていること、と呼ばれますか? 適用範囲:これも見られ、コンパイラは最近のfooの引数の形式としてそれを宣言している、それを取ります。 エンジン:いつも素晴らしいありがとう言わず優しさ。今、私がしたい 2 に割り当てること。 エンジン:おい、私は再びお邪魔してすみません。私はRHSをコンソールとして引用し、あなたはまだそれを見たいですか? スコープ:私たちと、ああ、私は何をすべきかと言う2。私はまた、コンソールは、内蔵されているオブジェクト。はい、どうぞ。 エンジン:ミームの騒々し。私は、ログがないと見なければなりません(..)。グレートは、見つかった、機能です。 エンジン:私はそれを参照するの何RHSを見つけるおい、助け?私はそれを覚えているが、一度確認したいと思いますが。 スコープ:残りは、この変数があまりにも変化していない、安心軽蔑ました。 エンジン:素晴らしいです。Iの値は、すなわち 2 、ログに送信されます(..) ......
関数FOO(A){ console.log( +のB)。 } 有する B = 2 。 FOO( 2)。// 4
対話とエンジンの範囲を見直し、さらに聞くことができます:
エンジン:FOOスコープ兄弟が、あなたは、Bそれを見たことがありますか?私はそれがRHSにする必要が引用します
スコープ:聞いていない、離れて行きます。
エンジン:FOO上司スコープの弟、えっ?あなたは、偉大なグローバルスコープの弟ですので、そこに知りませんでした。B持っているあなたはそれを見て?RHSは私それが参照する必要があります。
スコープ:もちろん、ここに行きます。
ネストされたスコープは、エルゴード非常に単純なルールをチェーン:、そしてものを見つけるまで継続しない場合は、実行の現在のスコープからのエンジンは、変数を探し始めます。見つけるか見つけないかのいずれか、グローバルスコープの最外層に到着したときに、検索処理が停止します。
概要:
スコープはどこで、どのように変数を見つけるために決定するためのルールのセットです。目的のための検索は、コンテナ自体の変数を見つけることである場合。LHSは、クエリを使用します。目標は、変数の値を取得する場合、RHSのクエリを使用します。スコープチェーンはグローバルスコープまで、現在のスコープに、ならびに、ネストされたスコープであります