Hoisting
์์ ์ด ์ํ scope์์ ์ต์๋จ๊น์ง ๋์ด์ฌ๋ฆฐ๋ค.
console.log(a);//error์ ์๋์ง ์์ a๋ฅผ ์ฐพ์ ๋ error ๊ฐ ๋ฌ๋ค.
console.log(a); //undefined
var a = 1;
console.log(a); //1์ฒซ๋ฒ์งธ console.log(a) ์์ error๊ฐ ์๋๊ณ undefined๊ฐ ๋์จ๋ค. ์ด๊ฒ ๋ฐ๋ก Hoisting 'ใ
'/ Hoisting์ ํตํด ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์์์ ์๋๊น์ง ์ญ ์ฝ์ด ๋ด๋ ค๊ฐ๊ธฐ๋ง ํ๋ค๋๊ฒ ์๋๋ผ๋๊ฑธ ์ ์ ์๋ค.
var a
console.log(a);
a = 1;
console.log(a);์ด๋ ๊ฒ ๋๊ฑฐ๋ผ๊ณ ์๊ฐํ๋ฉด ์ฝ๋ค. ๋์ด์ฌ๋ ค์ ๋ฏธ๋ฆฌ ๋ณ์๋ฅผ ์ ์ํ์ง๋ง ๊ฐ์ ์ ์๋ฆฌ์์ ๋ฃ์ด์ง
์ ์ฒด๊ฐ ๋์ด์ฌ๋ ค์ง๋๊ฒ ์๋๋ผ ๋ณ์์ ๋ํ ์ ์ธ๋ถ๋ถ๋ง ๋์ด์ฌ๋ ค์ง๋ค.
console.log(a);
var a = 1;
console.log(a);
foo();
function foo(){
console.log(a);
}foo() ํจ์๋ ๋ฌธ์ ์์ด ์คํ๋๋ค.
bar();
var b = 1;
function bar(){
if (false) {
b = 2;
} else {
console.log(b);
}
}
console.log(b);bar()๋ฅผ ์คํํ๋ฉด console.log(b)๊ฐ ์ฐํ๋๋ฐ b๋ ์์ง ์ ์ ๋๊ธฐ ์ ํจ์๋ฅผ ํธ์ถํ์๋ค. ํ์ง๋ง ํธ์ด์คํ
์ผ๋ก var b ๊ฐ ๋จผ์ ์ ์ธ์ด ๋์ด ์๊ธฐ ๋๋ฌธ์ undefined๊ฐ ๋ฌ๋ค.
var b;
bar(); // undefined
b = 1;
function bar(){
if (false) {
b = 2;
} else {
console.log(b);
}
}
console.log(b); //1์ด๋ฐ์์ผ๋ก ์๊ฐํ๋ฉด ์ฝ๋ค.
Function Expressin ํจ์ ํํ์
d();
var d = function () {
console.log('I am inside function d');
};๋ณ์๋ก ์ ์ํ๊ณ ํจ์๋ฅผ ํ ๋นํด ์ค๋ค. d()๋ undefined๊ฐ ๋์จ๋ค. ์๋ํ๋ฉด var d ๊น์ง๋ง hoisting ๋๊ธฐ ๋๋ฌธ์ด๋ค.
var d;
d();
d = function () {
console.log('I am inside function d');
};์ด์ ๋น์ทํ๋ค๊ณ ์๊ฐํ๋ฉด ์ข๋ค.
Function Declaration ํจ์ ์ ์ธ์
j();
function j (){
console.log('j');
}์ ์ธ์์ผ๋ก ์ ์๊ฑด ํจ์ ์์ฒด๊ฐ hoisting ๋๋ค. ํ์ฌ ์ปจ๋ฒค์ ์ ๋ง์ถ์ด ์์ ํ๋ฉด ๋๋ค.
ํจ์ ์ ์ธ์์ ์ธ๋ฏธ์ฝ๋ก (;)์ ์ฐ์ง ์๋๋ค.
var e = 2;
var d = function () {};
function j () {
console.log('j');
} //์ด ๋ถ๋ถ์ ์ธ๋ฏธ์ฝ๋ก ์ ์ฐ์ง ์๋๋ค.hoisting ๋๋๊ฑด ๋ณธ์ธ์ด ์ํ scope ๊น์ง ๋์ด์ฌ๋ ค์ง๋ค.
var me = 'sla';
function foo () {
alert(me);
var me = 'someone else';
}
foo();var me = 'sla';
function foo () {
var me;
alert(me);
me = 'someone else';
}
foo();๊ทธ๋์ undefined๊ฐ ๋ฌ๋ค.
Quiz
function foo() {
return
{
age: 30
};
}
console.log(typeof foo());undefined๊ฐ ๋ฌ๋ค. return ๊ตฌ๋ฌธ์ ๊ฐํํด์๋ ์๋์..
var arr = ['hello', 'world'];
arr[a] = 'thank you';
console.log('2' in arr);์ธ๋ฑ์ค in arr ์ธ๋ฐ ์ธ๋ฑ์ค๋ ๊ฒฐ๊ตญ ๋ฌธ์๋ผ ์คํ์ด ๋๋ค.
Last updated
Was this helpful?