スコープ と 字句スコープ を理解することは、効率的でエラーのない JavaScript コードを作成するための基礎です。これらの概念は、変数へのアクセス方法と、変数がコード内のどこで使用できるかを決定します。
スコープ は、変数の可視性とアクセス可能性を決定する現在の実行コンテキストを指します。 JavaScript には 3 種類のスコープがあります:
例:
{ let a = 10; const b = 20; console.log(a, b); // Output: 10, 20 } console.log(a); // Error: a is not defined
例:
function testFunctionScope() { if (true) { var x = 10; // Function-scoped } console.log(x); // Output: 10 } testFunctionScope();
例:
var globalVar = "I am global"; console.log(globalVar); // Output: I am global
字句スコープ は、変数のスコープがソース コード内の位置によって決定されることを意味します。関数は、呼び出し時ではなく定義時に設定されていたスコープ チェーンを使用して実行されます。
スコープ チェーンは、JavaScript が変数参照を解決するために使用するスコープの階層です。現在のスコープで変数が見つからない場合、変数は外側のスコープで検索され、グローバル スコープに到達するまで続けられます。
例:
function outer() { let outerVar = "I'm outer"; function inner() { console.log(outerVar); // Accesses the outer scope } inner(); } outer(); // Output: I'm outer
内部関数は、字句スコープにより、外部関数の変数にアクセスできます。
例:
function outerFunction() { let outerVariable = "Outer"; function innerFunction() { let innerVariable = "Inner"; console.log(outerVariable); // Outer console.log(innerVariable); // Inner } innerFunction(); } outerFunction();
function createMultiplier(multiplier) { return function (value) { return value * multiplier; // Accesses 'multiplier' from outer scope }; } const double = createMultiplier(2); console.log(double(5)); // Output: 10
クロージャは、外部環境からの変数を記憶するために字句スコープに依存します。
例:
function outerFunction() { let count = 0; return function () { count++; console.log(count); }; } const counter = outerFunction(); counter(); // Output: 1 counter(); // Output: 2
let、const、または var なしで宣言された変数はグローバル変数になります。
{ let a = 10; const b = 20; console.log(a, b); // Output: 10, 20 } console.log(a); // Error: a is not defined
ブロック内で var を使用すると、予期しない結果が発生します。
function testFunctionScope() { if (true) { var x = 10; // Function-scoped } console.log(x); // Output: 10 } testFunctionScope();
ネストされたスコープで宣言された変数は、外側のスコープの変数をシャドウ (オーバーライド) できます。
var globalVar = "I am global"; console.log(globalVar); // Output: I am global
Scope | Lexical Scope |
---|---|
Refers to the context in which variables are accessible. | Refers to how the location of variables in the code determines scope. |
Can be global, block, or function. | Depends on the structure of the code when it is written. |
Dynamic during runtime. | Fixed during code definition. |
function outer() { let outerVar = "I'm outer"; function inner() { console.log(outerVar); // Accesses the outer scope } inner(); } outer(); // Output: I'm outer
これらの概念を習得することは、効果的な JavaScript コードをデバッグして作成するために重要です。
こんにちは、アバイ・シン・カタヤットです!
以上がJavaScript のスコープと語彙スコープをマスターするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。