護衛する
6929 ワード
リフトの事前定義
最終的には
hoist
というものを「引き上げる」と言うことができます.Hoisitng
ハウスティンはECMAScript 2015(ES 6)に登場した.
解析器は、コードを実行する前に宣言をドラッグ&ドロップするだけで、初期化ではありません.
宣言された関数を囲む最上位またはグローバル範囲(global scope)に移動します.console.log("물은 역시 " + water);
var water = "삼다수";
実行後、エラーではなくundefined
の出力であることを確認できます.
エスケープが発生すると、コードは次のように解釈されます.var water;
console.log(water);
water = "삼다수";
狙いを定める
1. var
ex) var
vs let
varNum = 6;
varNum += 7;
var varNum;
console.log("var로 선언한 varNum : " + varNum);
letNum = 6;
letNum += 7;
let letNum;
console.log("let으로 선언한 letNum : " + letNum);
var
と宣言されたvarNum
変数では、転送エラーが発生しますが、let
と宣言されたletNum
を使用するとエラーが発生します.
let,cont変数がハイライトされない理由
すべての宣言書が転載されます.var
宣言部はundefined
に初期化され、let
、const
宣言部はuninitalized
状態に保持される.let
、const
変数は、割り当て時にのみ初期化されます.つまり、割り当てが完了するまでJavaScriptエンジンは変数にアクセスできません.宣言と初期化の前にTemporal Dead Zone
と呼ばれています.
2.関数宣言
ex)関数宣言文vs関数式hoisted();
function hoisted() {
console.log("함수 선언문 호이스팅");
}
notHoisted();
var notHoisted = function() {
console.log("함수 표현식");
}
ハウスティンは次のように起きた.最終的には、notHoisted
変数は関数ではないため、エラーが発生します.var notHoisted;
notHoisted(); ///TypeError
notHoisted = function() {
console.log("함수 표현식");
}
n/a.結論
undifined
またはreference error
を回避するためには、常にスキャン領域内の最上位レベルで宣言および初期化することが推奨される.
リファレンス
https://developer.mozilla.org/ko/docs/Glossary/Hoisting
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Statements/var
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Statements/function
https://blog.bitsrc.io/hoisting-in-modern-javascript-let-const-and-var-b290405adfda
Reference
この問題について(護衛する), 我々は、より多くの情報をここで見つけました
https://velog.io/@gga4638/호이스팅Hoisting
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
console.log("물은 역시 " + water);
var water = "삼다수";
var water;
console.log(water);
water = "삼다수";
varNum = 6;
varNum += 7;
var varNum;
console.log("var로 선언한 varNum : " + varNum);
letNum = 6;
letNum += 7;
let letNum;
console.log("let으로 선언한 letNum : " + letNum);
hoisted();
function hoisted() {
console.log("함수 선언문 호이스팅");
}
notHoisted();
var notHoisted = function() {
console.log("함수 표현식");
}
var notHoisted;
notHoisted(); ///TypeError
notHoisted = function() {
console.log("함수 표현식");
}
Reference
この問題について(護衛する), 我々は、より多くの情報をここで見つけました https://velog.io/@gga4638/호이스팅Hoistingテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol