Scope
7609 ワード
JavaScriptのコアメカニズムScopeを理解します.
コード定義時のコンテキスト、変数の論理空間と有効範囲を格納します.
JavaScriptでは、Scopeは変数を生成する空間 変数の有効範囲 現在実行中のコンテキスト 種類
コード定義時のコンテキスト、変数の論理空間と有効範囲を格納します.
Scope
は범위
という辞書の意味を持つ単語です.JavaScriptでは、Scopeは
변수의 유효범위
を表します.種類
スコフの種類を整理してください.
ぜんきょくけい
これは、アプリケーションが実行されるとすぐに作成されるスペースです.
どこからでも近づくことができます.
どこでどのように修正して汚すか分からないので、変数値をグローバルスキャンに登録/保存しないでください.const
キーワードを使用して値を変更できない場合は、使用しても大丈夫ですが、変数名の重複が発生する可能性があるので、どうしても使用しないほうがいいです.// 전역스코프 생성
var a = 0; // 전역스코프에 저장
ゾーンスキャン
これらは特定の領域を持つカメラです.
かんすうそういん
関数によって生成されるスキャンプログラムは、関数の実行時に生成されます.
関数ドメインを基準にします.function fn() {
var a = 2; // fn 함수스코프에 저장
}
fn2() // fn 함수스코프 생성
ブロックミラー
{}
内の領域を「ブロック」と呼び、ブロック領域を基準としたスキャンである.
ブロック内のコード実行時に生成されます.
ブロック内では、let/const
キーワードによって宣言された変数がブロックスキャン内で生成される.
ES 6構文がサポートされている環境でのみ使用できます.{
// 블록스코프 생성
let a = 10; // 블록스코프에 저장
const b = 20; // 블록스코프에 저장
var c = 30; // 전역스코프에 저장
}
特長
スコフにはいくつかの特徴がある.
スキャンの定義と作成/削除
JavaScriptのスキャンポイントで定義されるポイントと生成されるポイントは異なります.
関数スケールは、関数宣言時に定義されます.
関数スキャンは、関数が呼び出された(実行された)ときに生成されます.
関数スキャンは、コードの実行が終了すると消えます.var x = 10
function fn1() {
var x = 20;
fn2();
}
function fn2() {
console.log(x);
}
fn1(); // 10
fn2
のブモクフはf1
のスコフのはずですが、なぜ全駅スコフの10が撮れたのでしょうか?
なぜなら、fn2
のスケールは、fn2
が発表されたときに定義されたからである.fn2
関数はグローバル空間で定義(宣言)されるため、グローバルscopeはブールモスクワフとなる.
このように宣言の過程で定義されたスタンダードは렉시컬 스코프
と呼ばれている.
逆に、実行時に定義されるスキャンは동적 스코프
と呼ばれます.
スキャンオーバーラップ
顕微鏡は重ねることができる.(スキャンオーバーラップ)
ザックスコフはブモスコフに近づくことができて、その駅は不可能です.
参照する変数が自分のscopeに存在しない場合はboomoscopeに登って変数の値を探します.(スコプチェニン)var a = 1;
function fn() {
var b = 2;
{
const c = 3;
console.log(a); // 1
console.log(b); // 2
console.log(c); // 3
}
console.log(a) // 1
console.log(b) // 2
// console.log(c) // ReferenceError: c is not defined
}
fn();
console.log(a); // 1
// console.log(b); // ReferenceError: b is not defined
// console.log(c); // ReferenceError: c is not defined
リファレンス
https://developer.mozilla.org/ko/docs/Glossary/Scope
https://poiemaweb.com/js-scope
Reference
この問題について(Scope), 我々は、より多くの情報をここで見つけました
https://velog.io/@ginameee/Scope
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
// 전역스코프 생성
var a = 0; // 전역스코프에 저장
function fn() {
var a = 2; // fn 함수스코프에 저장
}
fn2() // fn 함수스코프 생성
{
// 블록스코프 생성
let a = 10; // 블록스코프에 저장
const b = 20; // 블록스코프에 저장
var c = 30; // 전역스코프에 저장
}
スコフにはいくつかの特徴がある.
スキャンの定義と作成/削除
JavaScriptのスキャンポイントで定義されるポイントと生成されるポイントは異なります.
関数スケールは、関数宣言時に定義されます.
関数スキャンは、関数が呼び出された(実行された)ときに生成されます.
関数スキャンは、コードの実行が終了すると消えます.
var x = 10
function fn1() {
var x = 20;
fn2();
}
function fn2() {
console.log(x);
}
fn1(); // 10
fn2
のブモクフはf1
のスコフのはずですが、なぜ全駅スコフの10が撮れたのでしょうか?なぜなら、
fn2
のスケールは、fn2
が発表されたときに定義されたからである.fn2
関数はグローバル空間で定義(宣言)されるため、グローバルscopeはブールモスクワフとなる.このように宣言の過程で定義されたスタンダードは
렉시컬 스코프
と呼ばれている.逆に、実行時に定義されるスキャンは
동적 스코프
と呼ばれます.スキャンオーバーラップ
顕微鏡は重ねることができる.(スキャンオーバーラップ)
ザックスコフはブモスコフに近づくことができて、その駅は不可能です.
参照する変数が自分のscopeに存在しない場合はboomoscopeに登って変数の値を探します.(スコプチェニン)
var a = 1;
function fn() {
var b = 2;
{
const c = 3;
console.log(a); // 1
console.log(b); // 2
console.log(c); // 3
}
console.log(a) // 1
console.log(b) // 2
// console.log(c) // ReferenceError: c is not defined
}
fn();
console.log(a); // 1
// console.log(b); // ReferenceError: b is not defined
// console.log(c); // ReferenceError: c is not defined
リファレンス
https://developer.mozilla.org/ko/docs/Glossary/Scope
https://poiemaweb.com/js-scope
Reference
この問題について(Scope), 我々は、より多くの情報をここで見つけました
https://velog.io/@ginameee/Scope
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について(Scope), 我々は、より多くの情報をここで見つけました https://velog.io/@ginameee/Scopeテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol