- 프로그램을 구성하는 기본적인 빌딩 블럭
- subprogram이라고도 불린다.
- 여러번 재사용 가능하다.
- 한가지의 task나 계산을 가지고 있다.
- 하나의 function에는 한가지의 일만 하도록 만들어야 한다.
- 함수이름은 명사보다는 동사형태로 이름 지정
- 자바스크립트에서 function은 object 이다.
function log(message){
console.log(message);
}
log(‘Hello@’) // Hello@
log(‘1234’) // 1234
1. Parameters
- premitive parameters: 메모리에 value가 그대로 저장
- object parameters: 메모리에 ref가 저장
: object는 레퍼런스로 전달되기 때문에 함수안에서 오브젝트의 값이 변경 > 그대로 메모리에 적용
function changeName(obj) {
obj.name = ‘coder’;
}
const ellie = {name: ‘ellie’}; // ref
changeName(ellie);
console.log(ellie); // {name: ‘coder’};
2. Defalut parameters
: 파라미터 옆에 디폴트 값 추가가능
function showMessage(message, from = ‘unknown’){
// 전달받는 파라미터 값이 없을때 기본적으로 값이 대체됨
console.log(`${message} by ${from}`);
}
showMessage(‘Hi’); // Hi by unknown
3. Rest parameters
: “….” 배열형태로 전달됨
function printAll(…args){
for(let i = 0; i < args.length; i++){
console.log(args[i]);
}
for (const arg of args){
console.log(arg);
}
args.forEach((arg) => console.log(arg));
}
printAll(‘to’, ‘the’, ‘world’);
// to the world
4. Return
: return undefined가 기본적으로 생략되어 있다.
if else를 많이 쓰기 보다, 조건이 맞지 않으면, 빨리 return 해서 빠져나와서 필요한 로직들을 추가하는것이 좋다.
function upgradeUser(user){
if(user.point <= 10){
return;
}
// long upgrade logic add
}
5. Callback
function randomQuiz(answer, printYes, printNo) {
if(answer === ‘love you’){
printYes();
} else {
printNo();
}
}
// anonymous function
const printYes = function(){
console.log(‘yes);
};
// named function (디버깅 할때 좋음)
const printNo = function print(){
console.log(‘no’);
};
randomQuiz(‘wrong’, printYes, printNo); // no!
randomQuiz(‘love you’, printYes, printNo); // yes!
6. Arrow function: 항상 이름이 없는 anonymous function, 간결하게 사용가능
const simplePrint = () => console.log(‘simplePrint!’);
const simpleMultiply = (a,b) => {
//do something more
return a = b;
};
// 블럭을 사용하면 return을 해줘야 된다.
'Front > Javascript' 카테고리의 다른 글
Object (0) | 2024.02.17 |
---|---|
Class (0) | 2024.02.17 |
연산, 반복문 (0) | 2024.02.17 |
Deep Dive: 데이터 타입 (1) | 2023.12.20 |
Deep Dive: 표현식과 문 (1) | 2023.11.03 |