JavaScriptホイスティング

Susan Sarandon
リリース: 2025-01-12 16:44:42
オリジナル
836 人が閲覧しました

Javascript Hoisting

JavaScript では、宣言する前に変数を使用できます。これを「吊り上げ」といいます。宣言が先頭に移動されるので、変数が前に使用されていても認識されます。

JavaScript には 2 種類のホイスティングがあります:

  1. 関数ホイスティング: function キーワードを使用して宣言された関数は、スコープの先頭に「ホイスト」され、定義される前に呼び出すことができます。
  2. 変数の巻き上げ: var を使用して宣言された変数もスコープの先頭に「巻き上げ」られますが、巻き上げられるのは宣言のみであり、割り当ては巻き上げられません。

:

  • let 変数と const 変数は、var 変数と同じ方法ではホイストされません。これらはまだホイストされていますが、宣言されるまで初期化されないため、宣言される前にアクセスしようとすると ReferenceError が発生します。

  • JavaScript での関数ホイスティングは次の場合にのみ機能します:
    関数宣言: 次のように、function キーワードを使用して宣言された関数: function myFunction() { ... }
    次の場合には機能しません:
    関数式: 次のように変数に割り当てられる関数: var myFunction = function() { ... }
    アロー関数: 次のようなアロー構文を使用して宣言された関数: var myFunction = () => { ... }
    したがって、JavaScript では単純な関数宣言のみがホイストされます。

Variabel ホイスティングの例:

// Using the variable before declaring it
console.log(x);  // Output: undefined

// Declaring the variable
var x = 10;
ログイン後にコピー
ログイン後にコピー

この例では、宣言される前に x が使用されていますが、コードはエラーをスローしません。代わりに、x は未定義として記録されます。これは、変数宣言が先頭にホイストされているためです。

関数ホイスティングの例:

// Calling the function before it's declared
myFunction();

// Declaring the function
function myFunction() {
console.log("Hello, world!");
}

// Output: "Hello, world!"
ログイン後にコピー
ログイン後にコピー

この例では、宣言される前に myFunction() を呼び出していますが、関数宣言がスコープの先頭に「ホイスト」されているため、コードは引き続き機能します。

それから、「簡単な「ベスト プラクティス」セクションを含めてください」と言ってください

JavaScript でホイスティングを処理するためのベスト プラクティス

  1. 先頭で変数を宣言
  2. 変数は常にスコープの先頭で宣言してください
  3. コードの可読性を向上させます
  4. 巻き上げによる予期せぬ動作を防止します
// Using the variable before declaring it
console.log(x);  // Output: undefined

// Declaring the variable
var x = 10;
ログイン後にコピー
ログイン後にコピー
  1. var より let と const を優先します
  2. 変数の動作をより予測可能にするには、let と const を使用します
  3. それらにはブロックスコープがあり、var と同じ方法ではホイストされません。
  4. 意図しない変数アクセスの防止に役立ちます
// Calling the function before it's declared
myFunction();

// Declaring the function
function myFunction() {
console.log("Hello, world!");
}

// Output: "Hello, world!"
ログイン後にコピー
ログイン後にコピー
  1. 吊り上げに頼らないようにしてください
  2. 巻き上げ機構に依存するコードを記述しないでください
  3. 関数と変数を使用する前に宣言してください
  4. コードをより明示的にし、理解しやすくします。
function example() {
    // Recommended approach
    let x, y, z;

    // Rest of your code
}
ログイン後にコピー
  1. 厳密モードを使用する
  2. 「use strict」を有効にして、ホイスティング関連の潜在的なエラーを検出します
  3. 問題のあるコードパターンの特定と防止に役立ちます
// Recommended
let count = 10;
const MAX_SIZE = 100;

// Avoid
var unpredictableVariable;
ログイン後にコピー
  1. 関数宣言との一貫性を保つ
  2. 予測可能性を高めるために関数宣言に固執する
  3. 関数宣言と式スタイルの混合を避ける
// Good: Clear and predictable
function calculateTotal() {
    // Function logic
}

calculateTotal();

// Avoid: Relies on hoisting
calculateTotal(); // Risky

function calculateTotal() {
    // Function logic
}
ログイン後にコピー

プロのヒント

  • 常にコードの明瞭さを目指す
  • ホイスティングについては理解していますが、コーディング手法として依存しないでください
  • 一目瞭然で予測可能なコードを作成します

以上がJavaScriptホイスティングの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート