がんばって
ハウスティンとは何ですか。
関数のすべての宣言を、関数の有効範囲の上部にドラッグ&ドロップします.
JAvascript関数は、実行前に関数に必要なすべての変数値を収集し、有効範囲の上部で宣言します.
狙いを定める
変数の加速
var
let/const
実行する前に、JavaScriptエンジンによって宣言ステップが最初に実行されます.その後初期化ステップが実行されない場合、アクセス時に参照エラーが発生します.(TDZ)
一時死角(TDZ:Temporal Dead Zone):スキャンの開始点(宣言フェーズ)から初期化フェーズの開始点までは一時的に参照できません.
let
変数繰り返し宣言x(再割り当て可能)
宣言フェーズと初期化フェーズは別々に行われる.
const
変数繰り返し宣言xRightarrow*は、宣言と初期化を同時に行う必要があります.Rightarrow*実行時まで実行できません.
再宣言、再割当x(再割当はオブジェクトとして使用可能)RightArrow=再割当は禁止されていますが、xは変更されません.
n/a.結論
エスケープは発生しますが、エスケープに入ると変数が作成され、コード実行がその変数の実際の位置に到達するまでTDZが生成されます.
関数の加速
関数宣言メソッド
function foo() { // 함수선언문(호이스팅 o)
console.log("hello");
}
var foo2 = function() { // 함수표현식(호이스팅 x)
console.log("hello2");
}
var foo3 = new Function(console.log("hello"));
var foo4 = () => console.log("bar");
転送優先度
同じ名前のvar変数宣言と関数宣言で呼び出されます。
どうしてハウスティンを知ってるの?
ES 6はどこでも利用可能で時間がかかるため、ES 5に変換する必要がある.Rightarrork=varは、まだどのように動作するかを知る必要があります.
Reference
この問題について(がんばって), 我々は、より多くの情報をここで見つけました https://velog.io/@doctor/호이스팅テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol