DeepDiveJS Chapter 12. 함수

[12장. 함수]

</br>

✏️ 일련의 과정을 반복할거라면, 묶어서 이름 붙여 씁시다.


  프로그래밍 언어에서 함수란 일련의 과정을 문으로 구현하고, 이걸 코드 블록으로 감싸서 하나의 실행 단위로 정의한 것을 말한다.

</br>

✏️ 출근도 함수입니다.


  일상 생활의 예를 들어보자면 출근도 함수다.

출근이라는 행위는 여러 일련의 행위를 묶어서 반복하기 편하게 만든 함수다. 사람의 뇌도 컴퓨터 메모리와 별반 다르지 않다.

구체적인 행위로 기억하면 어렵기 때문에, 자연스레 묶어서 기억하게 된다.

사람이 컴퓨터보다 똑똑하고 값지다.

</br>

✏️ 자바스크립트에서는 함수도 객체다.


  자바스크립트에서는 함수는 객체 타입의 값이다.

뿐만 아니라, 변수에 할당하거나 프로퍼티 값이 되거나, 배열의 요소가 되거나 매개변수로 전달할 수도 있다.

</br>

✏️ 함수의 호이스팅


  var로 선언된 변수처럼, function으로 만들어진 함수도 호이스팅이 된다.

차이가 있다면, var의 경우 평가 단계에서 변수가 할당되지 않고 선언만 되기 때문에 호이스팅 되어도 undefined가 되지만 함수의 경우는 실행이 가능하다.

다만, 코드의 흐름이 비정상적이기 때문에 이런 코드 스타일을 장려되지 않는다고 한다.

</br>

✏️ 순수함수와 비순수함수


  자바스크립트는 멀티 패러다임 언어로서, 함수형 프로그래밍을 할 수 있다.

함수형 프로그래밍에서 중요한 것이 순수 함수인데, 이는 외부 상태를 변경하거나 의존하지 않고 매개변수에만 의존하는 함수를 말한다.

이러한 순수함수는 함수의 부수효과를 줄여주며, 버그의 발생시 원인파악을 용이하게 한다.