고짬기록

호이스팅 / var, let, const / 함수 선언식, 함수 표현식 본문

개발 공부 💻/JavaScript

호이스팅 / var, let, const / 함수 선언식, 함수 표현식

고짬이 2022. 8. 17. 17:52

호이스팅

  • 위로 끌어올려지는 것 같은 현상
  • var 변수 선언함수 선언문에서 발생

 

var, let, const

  var let const
중복 선언 가능 불가능 불가능
재할당 가능 가능 불가능
스코프 레벨 함수 스코프 블록 스코프 블록 스코프

 

1. 중복 선언

2. 재할당

3. 스코프 레벨

function temp() {
	if(true) {
    	var a = 1;
        console.log(a) // 1
    }
    console.log(a) // 1 -> 함수스코프
}

temp()
console.log(a) // ReferenceError: a is not defined -> 함수 밖이므로
function temp() {
	if(true) {
    	let a = 1;
        console.log(a) // 1 -> 블록 스코프
    }
    console.log(a) // ReferenceError: a is not defined -> 블록 밖이므로
}

temp()
console.log(a) // ReferenceError: a is not defined

⭐호이스팅⭐

console.log(n) // undefined
var n = 'merong'; 

console.log(m) // Uncaught ReferenceError: m is not defined
let m = 'no-merong'; 

console.log(l) // Uncaught ReferenceError: l is not defined
const l = 'HeHe';

 

함수 선언식 vs 함수 표현식

함수 선언식

function sum(a, b) {
	return a + b;
};

함수 표현식

const minus = function(a, b) {
	return a - b;
};

⭐호이스팅⭐

// 함수 선언식
console.log(sum(2, 3)) // 5
function sum(a, b) {
	return a + b;
};

// 함수 표현식
console.log(minus(5, 2)) // Uncaught TypeError: minus is not a function
var minus = function(a, b) {
	return a - b;
};
Comments