프론트엔드/Javascript
[javascript] 함수
잡캐헨리
2022. 6. 24. 10:24
기존에 정확히 몰랐던 함수의 작동방식에 대해 정리해보려고 한다.
자바스크립트에서 함수는 호이스팅 (hoisting)이라는 기법으로 특별한 메모리에 미리 저장되어있다가 코드 최상단으로 끌어올려지는 듯하게 작동하는데 호이스팅 때문에 예상치 못한 동작을 하기도 한다. 까지가 내가 알고 있던 내용이지만 자세하게 어떻게 함수가 동작하는지는 모르고 있었다.
함수
코드의 묶음이자 기능의 단위이다. 입력과 출력을 가지며 (매핑: 키(key) 역할을 하는 데이터와 값(value) 역할을 하는 데이터를 짝 지어(=연결 지어) 저장하는 데이터 구조 ) 호출후에는 반드시 return하게된다.
함수 호출 후 평가식
1. 함수가 호출되면 메모리에 저장된 함수의 코드가 조회되고,
2. 함수 호출시 전달된 파라미터로 함수의 파라미터들이 바뀐다.
3. 파라미터평가가 완료되면 함수의 코드들이 순차적으로 실행된다
4. 함수 실행 후 값이 return되고, 함수 호출코드가 return값으로 바뀐다
일급객체
자바스크립트에서 함수는 일급객체 (first class citizen)에 속한다. 일급객체란
1. 해당 타입이 변수에 할당될 수 있어야 한다.
2. 해당 타입이 함수의 인자로 넘어갈 수 있어야한다.
3. 해달 타입이 함수의 반환값으로 반환될 수 있어야 한다.
의 조건을 만족하는 데이터 타입을 의미하는데 Number, String, Boolean, Null, Undifined 에 추가로 함수가 일급객체에 속한다.