Hoisting


JSにはhoistingという概念がある.
まず変数を宣言すると、JSはすべての宣言の変数を最上位レベルのscopeに引き上げます.
varの場合、デフォルトでは、変数を宣言すると、変数は自動的に値を未定義に初期化します.
console.log(hoisitng);
var hoisting = "min";
//undefined
このような状況ではどうなるのでしょうか.
もちろんvarの場合、デフォルトでは値が定義されていないため、値が割り当てられる前にデフォルトでは未定義になります.ハウスティンについて話します.
var hoisting = undefined;
hoisting = "min"
console.log(hoisting);
//"min"
このような形で現れます.

それではletとconstはHostingになれないのですか?


実は、これはハウスティンになっています.
letとconstは実質的に反発するが、letとconstは反発の過程でvarとは異なり、それらの値は基本的に定義されていないため、それらの値は宣言されていない.
console.log(a)
let a = 1
//Uncaught ReferenceError: a is not defined
上のコードのように、もちろんエラーが発生します.letとconstは最初は値がないので定義されていません.contまたはletは、TDZという領域にある反発オブジェクトであるため、最初に値を宣言しないと、値は正常に出力されません.

[関数も護送対象?]


もちろんです.関数もハイライトできます.
JSはすべての声明と実行が良いニュースだと考えています.これは便利です.
hi();
function hi(){
var hi = "hi"
console.log(hi);
}
上のコードを見ると、hi関数が正常に動作していることがわかります.
関数が定義されていなくても、正常に動作しますか?これは常識的な話ではありません...
したがって、通常は矢印関数が使用されます.このようにconst関数名=()=>{}を使用します.すなわち、contが先に宣言されていないため、関数はもちろん実行されないので、使用することをお勧めします.