がんばって
がんばってください。
console.log(variable); //undefined
var variable;
コード作成はJavaScriptの特徴であり,その行為は宣言がコードの先端に昇格したようなものである.JAvascriptエンジンは、コードが行ごとに実行される(実行時)前に、ソースコードを評価し、ソースコード内の宣言を検索して最初に実行します.(実行コンテキストを理解している場合は、このセクションをより詳細に理解できます.後で関連コンテンツを作成します)したがって、上記のコードで宣言された変数の部分は、まず実行され、出力が実行されます.
へんすうかそく
へんすう
ブートを理解するには、変数メカニズムを理解する必要があります.
変数は、宣言=>初期化=>割り当てのフェーズを経験します.varキーワードとletキーワードがこのステップを実行するプロセスが異なり、それに応じて異なるブート方式も発生します.
var
varキーワードとして宣言された変数は、実行時までに宣言フェーズと初期化フェーズを経ます.
console.log(v);//undefined
v = 100;
console.log(v);//100
var v = 200;
console.log(v);//200
上のコードを見て、実行順序と結果を予測します.まず、実行時の前にvarvでvの宣言と初期化を行います.さらに宣言された部分がない場合は、最初の行から実行します.最初のコンソールでは、vは初期化状態であり、値は指定されていないため、undefinedが出力されます.そして、vには100が割り当てられるので、2回目の出力の値は100となる.次に200が割り当てられ、最後に200が出力される.
let
letキーワード宣言の変数は、実行時まで宣言のみを実行します.初期化は、以降の実行時に宣言に達した場合にのみ行われます.letキーワードにおける宣言から初期化フェーズまでの間隔を一時的な死角領域と呼ぶ.
console.log(v); //Cannot access 'v' before initialization
let v;
console.log(v);//undefined
v = 100;
console.log(v);//100
実行時にlet vを実行してから宣言します.最初の出力では、初期化がまだ行われていないため、エラーが発生しました.その後letvに再到達すると初期化され,2番目のコンソールはundefinedを出力する.最後に100が割り当てられ、100が出力される.letキーワードを使用すると、エスケープが発生しますが、エスケープは発生しないように見えます.前述したように、実行時までは宣言フェーズしか行われず、letキーワードを使用する根拠となるためです.
△ハウスティンは開発者の立場で混乱を激化させた.なぜハウスティンが必要なのか.
関数の加速
関数のエスケープは、宣言か式かによって異なります.関数の生成点が異なるため、異なる方法でエスケープされます.
関数宣言
宣言を使用して関数を定義すると、実行時までに関数オブジェクトが作成されます.JavaScriptエンジンは、関数名と同じ名前の識別子を生成し、生成した関数オブジェクトを識別子に割り当てます.
変数であれば宣言・初期化・配分が可能です.
console.log(add(2, 3)); //5
function add(x, y) {
return x + y;
}
以下の手順で起動します.関数式
関数式で関数を記述すると、変数反発が発生します.
console.log(add);//undefined
var add = (x, y) => {
return x + y;
};
console.log(add(2, 3));//5
以下の手順で、変数番号のように動作します.Reference
この問題について(がんばって), 我々は、より多くの情報をここで見つけました https://velog.io/@qudgus21/호이스팅テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol