Function
: 특정 작업을 수행하거나 값을 계산하는 데 사용되는 코드의 묶음(집합)
1) 코드 재사용
더보기
// 덧셈 예제코드
function sum(a, b){
return a + b;
}
let result = sum(1, 2); // 3
console.log(result);
console.log(sum(297421,123879));
2) 모듈화 & 추상화
: 복잡한 작업을 수행하는 코드를 함수로 분리
- 모듈성 : 로직(코드 흐름) 단위로 작업을 나누어 관리할 수 있는 특성
3) 이벤트 처리
: 웹 페이지에서 발생하는 다양한 이벤트를 처리하는데 사용
더보기
(예시)
let button = document.querySelector('button');
function message(){ // 웹 문서의 요소들과 묶이는 기능 동작을 함수로 정의
console.log('버튼이 클릭되었습니다.');
}
button.addEventListener('click', message); // 웹 문서의 내용인 button 클릭 시 동작을 설계
함수 구현 방법 (함수 생성)
: function 키워드를 사용하여 함수를 생성한다.
더보기
(기본 구조)
function 함수명(매개변수, parameter) {
함수가 수행할 코드
return 결과값;
}
함수명
- 변수 명명 규칙과 유사
- 동사 사용을 권장
매개변수(parameter; 파라미터)
- 함수에 입력으로 제공되는 값(데이터)
- 대부분 해당 값을 통해 특정 작업을 수행
결과값(return, 리턴값)
- 함수가 작업을 완료한 후 반환하는 값
- return 키워드를 사용하여 결과값을 반환
함수 선언 방식
1) 함수 선언식
- function 키워드 사용, 함수의 이름이 필수적으로 명시
- 호이스팅이 적용 → 함수를 선언하기 전에 호출할 수 있음
2) 함수 표현식
- 함수를 변수에 할당하는 방식으로 정의
- 함수명 사용이 선택적
- 호이스팅 적용 불가 → 선언(정의) 이전에 호출 불가
더보기
(기본 구조)
const 변수명 - function(매개변수){
함수 기능 작성
return 반환값;
}
3) 화살표 함수
- 기존의 function 키워드를 화살표로 대체하여 간결한 함수를 작성
- 항상 익명 함수(이름이 없는 함수)로 사용
- 'this'가 일반 함수와 다르게 바인딩 됨
- 호이스팅 불가
- 함수 기능이 단일문이면 중괄호와 return 키워드를 생략 가능하다
더보기
(기본 구조)
const 변수명 = (매개변수) => {
- 함수 기능 작성
return 반환값;
}
함수 호출 방법
- 함수명(인자값); 으로 함수를 호출한다
함수의 스코프(범위, scope)
- 지역변수(local) : 중괄호 내의 영역(함수 내부)
- 전역변수(global) : 해당 파일(모듈) 내의 영역
자바스크립트 함수 구조 (매개변수 & 인자)
1. 매개변수(파라미터, parameter)
- 함수를 정의하고 호출할 때 함수에 데이터를 전달하는 방식 (변수) - 선언
- 함수를 호출 시에는 괄호 안에 인수(argument)를 넣어서 전달
2. 인자(인수, 아규먼트, argument)
- 함수를 호출할 때 전달하는 실제 값(데이터)
- 함수 호출마다 다른 데이터 전달이 가능
매개변수
1. 기본 매개변수 (default)
- 함수에 인자를 전달하지 않았을 때 사용되는 기본값을 정의
- 함수 호출 시 특정 매개변수(기본 매개변수) 생략이 가능
더보기
function defaultFunc(param1=value1, param2=value2) {
}
2. 가변 매개변수
- 함수가 받을 수 있는 매개변수의 수가 변할 수 있다는 것을 의미
- 함수 호출 시 인자의 수가 정해져있지 않고, 함수 내부에서 유동적으로 처리
3. 나머지 매개변수
- JS에서는 나머지 매개변수를 사용하여 가변 매개변수를 구현
- 함수에 전달된 인자들을 배열의 형태로 받음
더보기
매개변수명 앞에 ...(spread 연산자)를 붙여 정의
데이터가 지정될 변수가 있는 매개변수 목록의 마지막에 위치
function spreadFunc(num1, num2, ...nums) {
// 매개변수명 앞에 ...연산자를 붙이는 경우 해당 데이터는 배열의 형태
}
function print(num1, num2, ...nums) {
// nums : 배열
console.log(nums);
}
print(1, 2, 3); // [3]
print(1, 2, 3, 4, 5); // [3, 4, 5]
print(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); // [3, 4, 5, 6, 7, 8, 9, 10]
Function 예제
더보기
//! 문제 1
// a = 10, b = 5 (매개변수와 인자값 구분)
// add(함수 선언식)
function add(a, b){
return a + b;
}
// subtract(함수 표현식)
const subtract = function(a, b){
return a - b;
}
// multiply(화살표 함수)
const multiply = (a, b) => a * b;
console.log(add(10, 5));
console.log(subtract(10, 5));
console.log(multiply(10, 5));
//! 문제 2
// 함수의 재사용성과 모듈성 확인 문제
//? 요구 사항
// 1. 회사의 직원들을 위해 월별 근무 시간과 시급을 기반으로 급여를 계산하는 프로그램을 작성
// : calculatePay(hours, rate)라는 이름의 함수를 작성
// : 근무 시간(hours)과 시급(rate)을 인자로 받고, 총 급여를 계산하여 반환
// 2. 근무시간이 160시간을 초과할 경우, 초과 근무 시간은 기본 시급의 1.5배로 계산
// : 함수를 작성한 후, 다음 직원들의 근무 정보를 사용하여 급여를 계산하고 출력
// >> 각 직원의 월별 근무 시간과 시급이 다를 수 있기 때문에 유연하게 동작될 수 있는 함수 작성
// 직원 A: 172시간, 시급 20달러
// 직원 B: 160시간, 시급 22달러
// 직원 C: 180시간, 시급 18달러
//? 예상 출력
// 직원 A 급여: $계산된 금액
// 직원 B 급여: $계산된 금액
// 직원 C 급여: $계산된 금액
function calculatePay(hours, rate){
// 월 급여: 근무 시간(hours) * 시급(rate)
if(hours > 160){
// 160 이하인 근무시간의 급여 계산
const regularPay = 160 * rate;
// 160 초과인 근무시간의 급여 계산
const overtimeHours = hours - 160;
const overtimePay = overtimeHours * 1.5 * rate;
return regularPay + overtimePay;
} else {
return hours * rate
}
}
// 직원들의 급여 계산
console.log('직원 A의 급여: $'+ calculatePay(172, 20));
console.log('직원 B의 급여: $'+ calculatePay(160, 22));
console.log('직원 C의 급여: $'+ calculatePay(180, 18));
'JavaScript' 카테고리의 다른 글
[JavaScript] 내장 객체 (0) | 2024.08.08 |
---|---|
[JavaScript] 이벤트(Event) (0) | 2024.08.07 |
[JavaScript] 객체 (0) | 2024.08.06 |
[JavaScript] 함수 심화 (0) | 2024.08.06 |
[JavaScript] 배열(Array) (0) | 2024.08.05 |