[Javascript]クレーンとは?
14218 ワード
号イースト(クレーン)
:ロープまたはチェーンで巻き付けられたドラムまたはリフトホイールを使用して荷重を上げる装置、またはリフト動作自体.
Hoistという言葉の意味を考えると、JavaScriptのHoistingの意味がよく覚えられます.
コードで宣言された変数と関数をコードの上部に昇格させ、その変数と関数の有効範囲の上部に宣言します.実際のコードがアップグレードされるのではなく,JavaScript解析器内部でアップグレードすることで処理される.実際のメモリに変化はありません.
ハウステンは
まず、変数シースは、変数の宣言と初期化時に、変数が属する関数内で最上位に上昇します.let/cont変数を宣言すると、エスケープは発生しません.
関数は、コードがどこで実装されているかにかかわらず、ブラウザがjavascriptを解析するときに最上位に引き寄せられることを宣言します. 関数式は、宣言と呼び出しの順序で正常に動作しない可能性があります.=関数式では、宣言と割り当ての分離が発生します. 1)関数式の宣言が呼び出しより高い場合(通常)
->let/constの場合、転送は発生しません
Javascriptの基本コードについて理解しました.
足りない内容を補充!(呼び出し優先度、関数式/関数宣言差異など)
https://gmlwjd9405.github.io/2019/04/22/javascript-hoisting.html
https://ojava.tistory.com/144
https://web-front-end.tistory.com/23
:ロープまたはチェーンで巻き付けられたドラムまたはリフトホイールを使用して荷重を上げる装置、またはリフト動作自体.
Hoistという言葉の意味を考えると、JavaScriptのHoistingの意味がよく覚えられます.
JavaScriptでのアクセラレータ(アップグレード)
コードで宣言された変数と関数をコードの上部に昇格させ、その変数と関数の有効範囲の上部に宣言します.実際のコードがアップグレードされるのではなく,JavaScript解析器内部でアップグレードすることで処理される.実際のメモリに変化はありません.
ハウステンは
var 변수의 선언
と함수선언문
でしか発生しなかった.まず、変数シースは、変数の宣言と初期化時に、変数が属する関数内で最上位に上昇します.let/cont変数を宣言すると、エスケープは発生しません.
console.log("Hi");
var name = "moone";
let name2 = "moone2";
↓ ↓ ↓ (javascript parser 내부에서 처리되는 결과)
var name; //var 변수 선언 (hoisting)
console.log("Hi");
name = "moone"; //변수에 할당
let name2 = "moone2"; //hoisting 발생하지 않음
関数シースは、関数の宣言をコードの最上位レベルに引き上げます.関数式を使用すると、ハイライトは発生しません.first();
second();
function first() {
console.log("First hello");
}
var second = function() {
console.log("Second hello");
}
↓ ↓ ↓ (javascript parser 내부에서 처리되는 결과)
var second; //변수 선언 (hoisting)
function first() { //함수 선언문 실행 (hoisting)
console.log("First hello");
}
first();
second(); //Error 발생!!!
second = function() {
console.log("Second hello");
}
変数に割り当てられた関数式は、昇格によって昇格しません.変数のスキャンルールに従います.関数宣言文と関数式のエスケープ
function sayHello(name) { // 함수선언문
var getName = function() { // 함수표현식
return "moone";
}
var userName = getName(); // 함수 "호출"
console.log("Hello, " + userName);
}
sayHello(); //"Hello, moone"
↓ ↓ ↓ (javascript parser 내부에서 처리되는 결과)
function sayHello(name) {
var getName; //함수표현식의 변수값 선언 (hoisting)
var userName; //var 변수값 선언 (hoisting)
getName = function() { // 함수표현식 할당
return "moone";
}
userName = getName(); // 함수 "호출"
console.log("Hello, " + userName);
}
sayHello(); //"Hello, moone"
2)関数式の宣言が呼び出しの下にある場合(TypeError) function sayHello(name) { //함수 선언문
console.log(getName); //undefined => 선언은 되어 있지만 값이 할당되어 있지 않음
var userName = getName(); //error
console.log("Hello, " + userName);
var getName = function() { // 함수표현식 할당
return "moone";
}
}
sayHello(); //TypeError: getName is not a function
3)関数式の宣言は呼び出しの下にあり,let/cont変数(ReferenceError)に割り当てられている.->let/constの場合、転送は発生しません
function sayHello(name) {
console.log(getName); //error
let userName = getName();
console.log("Hello, " + userName);
let getName = function() {
return "moone";
}
}
sayHello(); //ReferenceError: getName is not defined
😎👍Javascriptの基本コードについて理解しました.
足りない内容を補充!(呼び出し優先度、関数式/関数宣言差異など)
References
https://gmlwjd9405.github.io/2019/04/22/javascript-hoisting.html
https://ojava.tistory.com/144
https://web-front-end.tistory.com/23
Reference
この問題について([Javascript]クレーンとは?), 我々は、より多くの情報をここで見つけました https://velog.io/@ansfls/javascript-호이스팅hoisting-이란テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol