함수 선언과 표현식의 차이
이 글은 예전에 따로 적어두었던 함수 선언과 표현식의 차이 메모를 옮기면서 다시 정리한 버전입니다..
원문이 짧은 편이라, 나중에 다시 볼 때 덜 끊기게 핵심 흐름만 조금 붙여뒀습니다.
함수 선언문과 함수 표현식은 무슨 차이가 있는거임? -> 함수 표현식은 실행 흐름이 함수에 도달했을 때 함수를 생성하는데 선언문은 정의되기 이전에도 호출할 수 있음
그게 어떻게 가능한거임? -> 호이스팅인데 JS는 준비단게에서 전역에 선언된 함수 선언물을 찾고 미리 생성해두는거임
스코프에도 차이가 있다던데 -> 선언문은 코드 블록 내에 위치하면 어디서든 접근할 수 있음, 블록 밖에서는 함수에 접근 못함 블록 레벨 밖에서도 사용하고싶으면 함수 표현식으로 할당 후 사용하면 됨
뭘 사용해야하는거임? -> 선언문으로 정의하는게 가독성엔 더 좋은데 조건에 따라 함수를 선언해야한다면 표현식을 사용해야함