Hoisstingと一時的なデッドゾーン


JS hoistingでは、インタプリタがコードの実行前にスコープのトップに(スコープについての詳細を知るために)変数、関数またはクラスの減速を動かすプロセスを参照します.
最初にいくつかの例を見てみましょう
var name;
console.log(name); //Returns 'undefined' from hoisted var declaration
name="mayank"
console.log(num); // Returns 'undefined' from hoisted var declaration (not 10)
var num = 10; // Initialization and declaration.
console.log(num); // Returns 10 after the line with initialization is executed.
fun();

function fun(){
  console.log("Hello from the fun");  // Returns Hello from the fun
}
ここではいくつかの例を見てきました.それらの例に基づいて、巻上げの概念を理解しましょう.しかし、最初に実際に巻上の意味何.
JS HOISTINGでは、インタプリタがコードの実行の前に、スコープの最上部に(スコープの詳細を知るためにアイボタンでビデオを参照する)変数、関数またはクラスの減速を動かすプロセスを参照します.
先頭に移動すると、それは文字通り変数/関数のスコープの上部に移動することを意味しませんが、それはちょうど基本的な理解ですが、それは実際にはない
実際に実行コンテキストはここで役割を果たします.実行コンテキストが始まると、2つのフェーズの作成フェーズと実行フェーズがあります.
作成段階ではメモリ割り当ては変数に対して行われ、変数がvar keyworkで宣言された場合、未定義の特別な値が割り当てられます.
実行フェーズで実行が起こります.
💡 JavaScriptの唯一のホイスト宣言ではなく、初期化!
それでは、例に戻って、変数宣言の場合に巻上げを理解しようとしましょう.
console.log(num); // Returns 'undefined' from hoisted var declaration (not 10)
var num = 10; // Initialization and declaration.
console.log(num); // Returns 10 after the line with initialization is executed.
この場合、実行コンテキストが最初に作成されるとすぐに、変数num getはメモリに割り当てられ、特別な値で未定義で初期化されます.
そして、最初の行が実行されたときに実行を開始します.さて、VARキーワードを使って宣言された変数の場合、どのように動作しているのかを確認できました.これは、このビデオの後半部分で見ることができます.
今、機能巻上げを理解しましょう.変数の場合と同じです.
実行コンテキストが開始されると、作成フェーズは関数宣言をメモリに入れ、実行フェーズを実行します.
例の助けを借りてこれを見ましょう
fun();
function fun(){
  console.log("Hello from the fun");  // Returns Hello from the fun
}
この例では、実行コンテキストは、関数のメモリを作成し、関数宣言全体をfun それでは.
そして実行フェーズは
全体の関数宣言を作成段階でメモリに入れることをFunction Hoisting .
fun();

var fun = function() {
  console.log("Hello from the fun");  
}

//returns error: Uncaught TypeError: fun is not a function
しかし、なぜ我々はこのコードでエラーを取得している🤷‍♂️ この理由のために、関数が巻かれていない代わりに、変数が代入され、変数が巻き上げられ、変数がホストされている場合、変数名が現在のスコープの先頭に移動します.割り当てられていない場合、関数宣言が呼び出されたときと同様に関数が巻き上がる場合には全く異なります.関数全体が現在のスコープの先頭に移動されるので、この場合、VARで宣言された変数としての楽しみが扱われ、2行目と3行目の実行が未定義になる前に、このエラーの楽しみを得ている理由は、関数ではない変数を起動しようとしている関数ではありません
これの理由があります、そして、それはJavaScriptだけのホイスト宣言です.
閉じるこの動画はお気に入りから削除されています.レット変数とconst変数も取得されますが、varと異なりデフォルトの初期化値はありません.
letとconstで宣言された変数が初期化前に読み込まれた場合、参照エラーがスローされます.
例を挙げてこれを見ましょう.
console.log(num); // error: Uncaught ReferenceError: Cannot access 'num' before initialization
let num = 10; // Initialization and declaration.
console.log(num); // error: Uncaught ReferenceError: Cannot access 'num' before initialization
const num = 10; // Initialization and declaration.
一時的なデッドゾーンとして知られている一つの小さな概念があります
一時的なデッドゾーンは、letとconstのキーワードで変数を宣言するときに発生するJavaScriptの動作ですが、ECMAScript 6ではVARではありません.宣言の前にLetまたはconst変数にアクセスすると、そのエラーが発生します.変数のバインディングとその宣言の作成の間に起こる時間間隔は、一時的なデッドゾーンと呼ばれます.
読書ありがとう.
私の社会的なハンドルに従って👉
陳川
あなたがこれが役に立つと支持したいならば💲 Buy Me Coffee☕