개발/HTML, CSS, JS
[자바스크립트] 함수 총정리 (문법, 매개변수, 인수, 호출, 반환)
두두나 Designer
2023. 6. 5. 20:45
함수 Function
- 특별한 목적의 작업을 수행하도록 설계된 독립적인 블록
- 하나의 실행단위
- 호출하여 해당 작업 반복 수행(재사용)
매개변수(parameter)
매개변수(parameter)란 함수를 호출할 때 인수(argument)로 전달된 값을 함수 내부에서 사용할 수 있게 해주는 변수이다.
주의
- 가급적 한가지 일만 정의할 것
- 매개 변수는 최대 3개 이내로 작성
문법
function 함수이름(매개변수1, 매개변수2,...) {
함수가 호출되었을 때 실행하고자 하는 실행문;
}
예시
function addNum(x, y) {
return x + y;
}
// -> 함수 정의
addNum(2, 3); // 5
// -> 함수 호출
- addnum : 함수이름
- x, y : 매개변수(parameter)
- 2, 3 : 인자(argument)
함수 선언식, 표현식
function add(x, y){
return x + y;
}
//함수 선언식
const add = function (x, y){
return x + y;
}
//함수 표현식
console.log(add(1,2)); //3
화살표 함수
const add = (x, y) => x + y;
console.log(add(1,2)); //3
함수 호출
var sum = addNum(2, 3);
// 함수 addNum()을 호출하면서, 인수로 2과 3를 전달한다.
// 함수의 호출이 끝난 뒤에는 그 반환값을 변수 sum에 대입한다.
그런데, 자바스크립트 함수는 매개변수와 인수의 개수가 일치하는지 확인하지 않는다.
따라서 addNum(2, 3, 5) 처럼 3개가 들어가더라도 인수 2, 3 만 전달하여 5를 반환한다.
ES6, 기본값을 통해 undefined 변수가 들어오면 초기화 지정이 가능함
y값 인수를 전달하지 않은 경우 기본값 y = 10으로 값 초기화
function addNum (x, y = 10){
return x + y;
}
console.log(addNum(2)); //12
// 인수 y값을 정의하지 않았기 때문에 undefined가 전달되었고
// 지정한 값인 y = 10 으로 초기화 됨
Dynamic parameters (The arguments object 인수 객체)
arguments 해당 내장 함수에 전달된 인수의 값을 인덱스로 액세스하여 배열과 같이 표현할 수 있는 객체.
예시
function func1(a, b, c) {
console.log(arguments[0]);
// Expected output: 1
console.log(arguments[1]);
// Expected output: 2
console.log(arguments[2]);
// Expected output: 3
}
func1(1, 2, 3);
매개변수 값 지정 없이도 핸들링 가능
function addNum (){
console.log(arguments);
}
addNum(1,2) //Object { 0: 1, 1: 2 }
예시
function addNum (){
return arguments[0] + arguments[1];
}
let result = addNum(1,2);
console.log(result); // 3
함수 반환
return 이후의 실행문은 실행하지 않기 때문에 return을 break 대신 쓰기도 함
function addNum(x, y){
return x + y;
console.log("이 코드는 수행을 안함")
}
console.log(addNum(2, 3)); //5
default return value는 undefined로 반환된다.
function addNum (){}
console.log(addNum()); //undefined
조건문과 함께 사용하여 함수를 반환
(숫자 모두 일치 ~ 당첨시에 true 반환 하도록 함)
function winNum(x, y){
if(x == 2 && y == 3) return true
else return false
}
console.log(winNum(2, 3)); //true
console.log(winNum(3, 3)); //false