함수정의, 호이스팅
★ 자바스크립트는 선언적 함수를 읽은 후 다시 위로 올라와 모든 코드를 읽음 ★
●함수선언문(더 많이쓰임)
- 정의 되기 전에 위에서 사용가능 (∵ 브라우저가 함수를 먼저 읽기 때문에)
function sum(a,b) {
return a+b
}
●함수표현식 - 호이스팅에 의해 sum은 함수가 아닌 변수로 선언되어 호출순서에 따라 함수 실행이 안될수도 있음.
- 정의 되기 전에 위에서 사용 불가능. (∵브라우저가 함수를 읽은 후 변수를 읽기 때문에 함수가 정의된 변수를 읽기전에 함수를 실행하기에 읽지 못함)
let sum = function(a,b) {
return a+b
}
●호이스팅(hoisting) : 끌어올리다
- 자바스크립트 함수 안에 있는 선언들을 모두 끌어 올려 유효범위(함수블록 {} 안)의 최상단에 선언하는 것(할당은 X)
foo();
foo2(); // ERROR!!
function foo() { // 함수선언문
console.log("hello");
}
var foo2 = function() { // 함수표현식
console.log("hello2");
}
↓Hoisting
var foo2 = function() { [Hoisting] 함수표현식
console.log("hello2");
}
foo();
foo2();
function foo() {
console.log("hello");
}