프로그래밍 언어에서 필요한 데이터를 담는 것이 변수이다.
아래 그림을 보자
매우 반복적이다.
그럼 함수는 어떤 기능을 할까?
반복적으로 계산되는 일들이 있으면 함수를 통해서 간단하게 만들 수 있다.
함수로 만들면 재사용이 가능하기 때문이다.
function이라는 키워드를 써서 함수의 이름을 지정할 수 있다. add에 숫자 a b를 받아서 a와 b를 리턴한다라고 하자.
add라는 함수는 사용자가 정의한 것이다.(코드블럭{}안에 기능들) 이것을 add라는 이름을 지정해 준 것이다.
즉 function이라는 키워드를 이용해서 이것은 이제 함수입니다라고 말해주는 것이다. 함수이름도 가능하면 의미있는 이름을 쓰자.(짧지만 간결하지만 의미있는 이름을 구상하자.)
받아오는 인자를 num1 num2로 할 수도 있다. sum이라는 변수를 만들어서 add라는 함수를 호출해보자. 함수를 호출한다는 것은 미리 정의된 인자 num1에는 3이 num2에는 4가 지정이되고 함수가 호출되면서 정의한 코드블럭이 실행되게 된다. 즉 3 + 4 7이 리턴이 되는 것이다.
7이 sum이라는 변수에 할당이 된다.
즉 sum이라는 변수가 만들어지면서 공간이 할당되고 7이라는 값이 들어가는 것이다.
함수에 다른 변수를 할당하는 것을 보자
add라는 함수이름은 함수가 정의된 레퍼런스가 들어있다.
다른 변수에 add를 할당하면 add가 복사되어서 같은 함수를 가르키게 된다.
즉, 함수이름 자체는 함수가 정의된 곳을 가리키고 함수를 실행하기 위해서는
괄호를 이용해서 2 3을 더한 값을 한 다음에 출력하면 5가 출력되는 것을 볼 수 있다.
즉 같은 함수를 가리킨다고 알자
아래그림은 오퍼레이터가 함수가 아니고 아무런 값을 전달하지 않기 때문에 undefined라고 되어있어서
에러가 발생하게 된다.
이제 surprise에 add라는 함수를 호출하게 되면(add는 num1과 num2를 받아서 숫자 하나를 리턴해주는 함수이다.
add라는 것은 add자체에 변수공간이 할당되어서 add가 가리키고 있는 레퍼런스가 들어있다. 그래서 surprise에는 add의 레퍼런스가 전달이 되어서 복사가 된다.
그래서 operator을 호출한다는 것은 당연히 add를 수행하는 것과 동일한 결론이 나온다. 하지만 아래로만 수행하면 NaN이 나오게 된다.
operator안에다가 숫자를 넣어주어야 5가 출력이 된다.
divide라는 함수명도 받아와서 num1을 num2로 나누는 작업을 아래와 같이하게 되면 0.6666666666으로 나오게 된다.
참고: https://www.youtube.com/watch?v=-cAPq25P-68&list=PLv2d7VI9OotTVOL4QmPfvJWPJvkmv6h-2&index=16
'JavaScript > DreamCoding' 카테고리의 다른 글
class 예제 & 콜백 함수 재정리 (0) | 2021.08.03 |
---|---|
boolean과 && 연산자 (0) | 2021.08.03 |
primitive 타입과 object의 차이점 (0) | 2021.08.03 |
JavaScript function 재정리 (0) | 2021.08.03 |
비동기 async와 await & Promise APIs (0) | 2021.08.03 |