무조건 위에서 아래로 읽어지면서 만들어짐
// 변수 선언
let 익명함수
// 익명함수 두번 생성
익명함수 = function () {
console.log('첫번째')
}
익명함수 = function () {
console.log('두번째')
}
// 호출
익명함수()
실행 결과
두번째
전체 코드를 읽기 전에 선언한 순서대로 만들어짐
따라서 같은 블록 어디에서 함수를 호출해도 상관없다.
// 선언적 함수 호출
선언적함수()
// 선언적 함수 두번 생성
function 선언적함수 () {
console.log('첫번째')
}
function 선언적함수() {
console.log('두번째')
}
실행 결과
두번째
→ 선언적 함수도 입력한 순서대로 생성되고 같은 이름이라면 덮어쓴다.
//호출
함수()
// 익명 함수 생성 (나중에 실행)
함수 = function () {
console.log('익명함수')
}
// 선언적 함수 생성 (선언적 함수가 미리 만들어짐)
function 선언적함수 () {
console.log('선언적함수')
}
//호출
함수()
실행결과
선언적함수
익명함수
자바스크립트에서 선언적 함수를 안 쓰는 이유
HTML 코드 내부의 script 태그는 하나씩 전체가 실행됨
그래서 선언적 함수를 쓰면 자바스크립트 코드 실행 흐름을 예측하기 더 힘들어진다
→ 그래서 자바스크립트는 안전하게 사용할 수 있는 익명 함수를 더 선호