▪ 하나의 작은 기능을 구현할 수 있다. / 함수는 작은 기능의 단위이다
▪ 함수는 문제 해결을 위한 고민을 논리적으로 풀어내는 작업을 하는 하나의 단위
→ 알고리즘 : 문제를 어떻게 해결할지에 대한 고민
▪ (컴퓨터에게 일을 시키기 위한) 지시사항의 묶음
→ 세분화 되어있는 일들을 한번에 이름을 지어 묶음
▪ 입력 → 함수 → 출력의 과정으로 이루어져 있다.
JavaScript에서는 함수 이름과 입력을 넣어야한다.
▪ 수학적인 표현 : f(hello)
▪ JavaScript : getLength("hello")
let length = getLength("hello");
console.log(length);
function myFunction(input) {
//컴퓨터에게 시킬 일
}
let myFunction = function(input) {
//컴퓨터에게 시킬 일
}
▪ 함수 실행시 입력에 따라 바뀔 수 있는 변수지만, let 등의 키워드를 쓰지 않고 사용가능
∷ 예시 : 집까지 가는데 걸리는 시간
→ 사람마다 속도와 집까지의 거리가 달라 매개변수로 지정해줌
let timeToGoHome = function(speed, distance) {
let time = distance / speed;
console.log(time);
}
-----------------------------
timeToGoHome(20, 100) // 5
time; // Error : not defined
let time = timeToGoHome(10, 200); // 20 -> 이 과정에서 콘솔에 20이라고 찍히지만
time; //undefined -> time에 담긴 값은 없다. -> 함수내에서 return으로 출력하지 않아 담기지않는다.
전달인자(arguments)와 함께 함수에 전달
상단의 함수의 time값은 바깥에서 쓸 수 가 없다.
→ scope문제 때문에 담아두고싶어 변수로 선언해도 담기지 않는다.
함수 바깥으로 결과를 가져올 때 사용
∷ 예시 1 : return 존재하는 경우
let timeToGoHome = function(speed, distance) {
let time = distance / speed;
return time;
}
let myTime = timeToGoHome(20, 100);
console.log(myTime); // 5
∷ 예시 2 : return 존재하지 않는 경우
let timeToGoHome = function(speed, distance) {
let time = distance / speed;
// 만일 아무것도 리턴하지 않는다면
}
let myTime = timeToGoHome(20, 100);
console.log(myTime); // undefined