JavaScript では、宣言する前に変数を使用できます。これを「吊り上げ」といいます。宣言が先頭に移動されるので、変数が前に使用されていても認識されます。
JavaScript には 2 種類のホイスティングがあります:
注:
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() を呼び出していますが、関数宣言がスコープの先頭に「ホイスト」されているため、コードは引き続き機能します。
それから、「簡単な「ベスト プラクティス」セクションを含めてください」と言ってください
// Using the variable before declaring it console.log(x); // Output: undefined // Declaring the variable var x = 10;
// Calling the function before it's declared myFunction(); // Declaring the function function myFunction() { console.log("Hello, world!"); } // Output: "Hello, world!"
function example() { // Recommended approach let x, y, z; // Rest of your code }
// Recommended let count = 10; const MAX_SIZE = 100; // Avoid var unpredictableVariable;
// Good: Clear and predictable function calculateTotal() { // Function logic } calculateTotal(); // Avoid: Relies on hoisting calculateTotal(); // Risky function calculateTotal() { // Function logic }
プロのヒント
- 常にコードの明瞭さを目指す
- ホイスティングについては理解していますが、コーディング手法として依存しないでください
- 一目瞭然で予測可能なコードを作成します
以上がJavaScriptホイスティングの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。