function name(parameter) { // 함수의 기능 // 함수의 출력값 -> return }
// 함수를 선언하고 함수이름을 선언한다.
function sum(x, y){
return x + y;
}
// 변수선언을 먼저하고, 함수이름은 선언하지않음
let sumXY = function(x, y){
return x + y;
};
// 변수자체에 이미 선언된 함수를 할당할 수 있다.
let sumXY = function(x, y){
return x + y;
};
let sumXYcopy = sumXY;
console.log(sumXYcopy(10, 20));
> 30
// 인자로 함수를 받아서 쓰는것
function sum(x, y, c){
c(x + y);
return x + y;
}
function callbackFunc(s){
console.log('콜백함수', s);
}
sum(10, 20, callbackFunc);
/*sum(10, 20, callbackFunc){
callbackFunc(10 + 20 == 30);
return 10 + 20;
}
callbackFunc(30){
console.log('콜백함수', 30);
}*/
/*sum(10, 20, callbackFunc){
console.log('콜백함수', 30);
return 30;
}*/
sum(10, 20, callbackFunc);
> 콜백함수 30
30
// 선언 이름 = 파라미터 => 실행코드
// 간단한 함수일 때 사용한다.
function add(a, b) {
return a + b;
}
// 위와같은 간단한 함수를 아래처럼 표현할 수 있다.
let addArrow = (a, b) => a + b;
add(100, 100);
> 200
addArrow(100, 100);
> 200
function add(a, b) {
return a + b; //리턴은 함수를 완전히 종료
console.log('jayss') // 함수가 종료되었기에 접근할 수 없는 코드
}
add(100, 200)
> 300만 나오고 jayss는 안나옴!!
파라미터의 작성 부분에서 기본 값을 설정해 줄 수 있다.
기본값이 설정되어 있다면, 입력해주지 않았을 때 기본 값으로 코드가 실행된다.
/*
파라미터 : 함수와 메서드의 입력 변수명
아규먼트 : 함수와 메서드의 입력 값
엄밀히 다르므로 헷갈리지 말자
*/
function add(a = 100, b = 200) {
return a + b;
}
add (10, 20); // 30
add (10); // 210
add (); // 300
add(b=300) // 500 -> 300을 a값으로 인식해버린다
add('',300) // 300 -> a === ''이 되어버려서 문자열임!!!!
add(undefined,300) // 400
add(,300) // error