호이스팅을 기반으로 5가지 문제 해결
7430 단어 webdevbeginnersjavascript
javascript에서 호스팅은 변수 및 함수 선언이 범위의 맨 위로 이동되는 동작입니다.
범위는 로컬 또는 글로벌일 수 있습니다.
x = 20 ;
console.log(x); // 20
var x ;
X는 범위( Global )의 맨 위로 호이스팅되므로 x를 위로하면 20이 됩니다.
게양은 let, const와 어떻게 작동합니까?
let과 const는 HOISTED가 되지만 당분간은 초기화될 때까지 액세스할 수 없습니다.
이것은 일반적으로 Temporal Dead Zone이라는 용어를 나타냅니다.
console.log(b);
let b = 100;
// Cannot access 'b' before initialization"
요약 완료 이 5가지 문제에 직면해 봅시다!
Q1: 출력을 예측합니다.
(function random(){
x++;
console.log(x);
var x = 21;
})();
출력 : NaN
// if we try to do hoisting here in the function scope
(function random(){
var x; // hoisted to the Top
x++; // here x is undefined
console.log(x) // NaN
x = 21;
})();
Q2: 출력을 추측?
doSomething();
function doSomething(){
x = 33;
console.log(x);
var x;
}
출력: 33
var x가 호이스팅되고 33으로 초기화됨에 따라.
질문 3: 이 문제의 출력?
var b = 1;
console.log(c);
var c = 2;
a = 1;
console.log(a);
출력 : 정의되지 않음, 1
호이스팅으로 인해 c가 정의되지 않았고 새로운 변수가 a = 1을 생성하여 1이 됩니다.
Q4: 출력을 예측합니다.
makeStringReverse();
var reverse = "*/" ;
function makeStringReverse(){
console.log(reverse);
reverse = "/*" ;
}
console.log(reverse);
산출
한정되지 않은
"*/"
설명
// actual execution flow
var reverse; // reverse is undefined atm
function makeStringReverse(){
console.log(reverse); // undefined
reverse = "/*" ; // initialized
}
makeStringReverse(); // called before reverse been initialized with "*/"
reverse = "*/" ;
console.log(reverse); // will console "*/" because it reverse was reassigned again.
질문 5:
function callName() {
var name = "John";
}
callName();
console.log(name);
산출
참조 오류: 이름이 정의되지 않음
설명 :
참조 오류의 간단한 이유는 변수가 호이스트된 범위입니다.
callName 함수 범위에는 호이스트되었지만 전역 범위에는 없기 때문에 오류가 발생했습니다.
그게 다야!
이것이 javasxript에서 게양을 명확하게 하는 데 도움이 되었기를 바랍니다. :)
삐!!
Reference
이 문제에 관하여(호이스팅을 기반으로 5가지 문제 해결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/easyvipin/solve-5-problems-based-on-hoisting-4ip7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)