매개변수가 있는 함수 정의문
기본 함수 정의문은 함수 안에 있는 코드를 실행할 때 단순히 함수명으로 호출해서 함수를 실행했다.
즉, 함수를 호출할 때 값을 전달할 수 없었다.
하지만 매개변수가 있는 함수 정의문은 함수를 호출하고자 할 때 전달하려는 값을 인수로 넣어 전달할 수 있다.
이렇게 전달된 값은 매개변수가 받아 함수 정의문에서 사용할 수 있다.
매개변수에 함수호출문에 있는 인수가 순서대로 할당된다.
매개변수 = 파라미터 라고 하기도 한다.
[기본형]
1. 매개변수의 갯수와 인수의 갯수가 일치하는 경우
function 함수명(매개변수1, 매개변수2, 매개변수3..){
자바스크립트 코드;
}
함수명(인수1, 인수2, 인수3..);
호출할때 인수를 넣어준다.
function addNum(num1, num2) {
let sum = num1 + num2;
console.log(sum);
}
addNum(10, 40);
( let sum은 함수 안에서 선언되어 지역 변수기 때문에 만약 console.log를 함수 바깥에 쓰면 sum은 없다고 오류 표시가 뜰 것이다.)
2. 매개변수에 기본 값을 정의한 경우
function 함수명(매개변수1, 매개변수2, 매개변수3=초깃값){
자바스크립트 코드;
}
함수명(인수1, 인수2);
//매개변수에 기본값을 할당한 경우
function multiple(a, b = 5, c = 10) {
return a * b + c;
}
let result1 = multiple(5, 10, 20); //매개변수도 변수라서 새로운 값이 들어가면 기존의 값은 사라진다.
console.log(result1); //70이 나온다.
let result2 = multiple(10, 20); //a,b는 값이 전달되고 c는 기본값이 적용
console.log(result2); //210이 나온다.
let result3 = multiple(30); //a만 값이 전달되고 b,c는 기본값이 적용
console.log(result3); //160이 나온다.
'let result1 = multiple(5,10,20)'에서 앞에서부터 해석하지말고 뒤에서부터 해석하자- multiple(5,10,20)이 변수 result1에 대입되는 것이다.
*매개변수도 변수라서 새로운 값이 들어가면 기존의 값은 사라지고 새로운 값으로 대체된다.
기본값을 할당해놨더라도 함수호출할 때 새로운 값을 넣으면 그 새로운 값이 적용된다.
*기본값을 정의할 경우 매개변수의 뒤부터 정의할 수 있다. 인수는 첫번째 순서부터 차례대로 적용되기 때문.
예제1)
예제2)
사용자로부터 받은 아이디 비밀번호 정보가 userId, userPw에 있으니깐 함수 호출할 때 인수에 이 값을 넣어줘야한다.
매개변수 없이 인수값 받아오기 arguments
매개변수 없이 인수를 받아오는 함수
만약 함수를 실행할 때마다 받아와야하는 인수의 갯수가 달라지거나, 혹은 인수가 너무 많은 경우
매개변수 없이
arguments 키워드를 이용하여 인수를 대신 받아올 수 있다.
함수 정의문에서 argument를 사용하면 arguments가 인수를 받아 배열로 데이터를 저장한다.
배열로 담긴 이 데이터는 함수 안에서 자유롭게 사용할 수 있다.
[기본형]
function 함수명(){
arguments;
자바스크립트 코드;
}
함수명(인수1, 인수2, 인수3....);
arguments에는 배열로 [10,20,30,40]이 들어가있는 것. (배열이니깐 인덱스 번호를 부여받음)
sum 함수가 실행되면 retrun문에 의해서 반환된 값이 sum의 자리로 온다.
function sum() {
arguments;
return arguments[0] + arguments[1] + arguments[2];
}
let result1 = sum(10, 20, 30, 40);
console.log(result1); //60이 나온다.
예제1) 모든 데이터 누산하기
인덱스 번호는 0번부터 시작하니깐 let의 초깃값은 0이여야하고, 조건식은 0부터 시작하기때문에 arguments.legth보다 <=이 아닌 <여야 한다. (데이터의 총 갯수가 10개라고 할 때 인덱스 번호는 0번부터 9까지 있기 때문이다)
예제2)
'자바스크립트 > 변수' 카테고리의 다른 글
[자바스크립트] - 자바스크립트에서 변수 쓰는 법 (0) | 2024.07.26 |
---|---|
[자바스크립트] - 변수 const (0) | 2024.07.26 |
[자바스크립트] - 변수의 재선언 / 재할당 (0) | 2024.07.26 |
[자바스크립트] - 변수 let / 함수레벨의 스코프(함수영역) , 블록레벨의 스코프(블록영역) (1) | 2024.07.25 |
[자바스크립트] -스코프 / 지역변수(로컬변수) / 전역변수(글로벌변수) (0) | 2024.07.25 |