//function name(param1, param2) {body ... return; }// one function === one thing // naming : doSomething, command , verb// createCardAndPoint -> createCard, createPoint (하나의 함수는 하나의 일을하도록 하는게 좋다.)functionprintHello(){console.log('Hello');}printHello(); // Hello만 출력됨 // 위의 코드를 좀 더 유용한 함수로 만드려면 functionlog(message){console.log(message); }log('Hello2'); // //파라미터로 전달된 메서지를 화면에 출력할 수 있게됨.
functionshowMessage(messagem from ='unknown'){console.log(`${message} by ${from}`);}showMessage('Hi!'); // Hi by unknown
4.Rest parameters (added in ES6)
functionprintAll(...args){ // 배열 형태로 전달됨 for(let i =0; i <args.length; i++){console.log(args[i]); }for (constargof args){console.log(arg); // arg의것들이 하나씩 지정이 되면서 출력됨 }args.forEach((arg) =>console.log(arg)); // 인자를 하나하나 불러옴}printAll('dream','coding','ellie'); // dream coding ellie// 세개의 인자를 전달함
5.Local scope(지역변수)
let globalMessage ='global'; // global varialble 전역변수 functionprintMessage(){let message ='hello';console.log(message); // local variable 지역변수 안에서만 접근 가능 console.log(globalMessage);}printMessage();
👉밖에서는 안이 보이지 않고 안에서만 밖을 볼 수 있다.
6. Return a value
functionsum(a, b){return a + b; }constresult=sum(1,2); // 3console.log(`sum: ${sum(1,2)}`);
7.Early return, early exit
// badfunctionupgradeUser(user){if(user.point >10 ){// long upgrade loginc... }}//good functionupgradeUser(user){if(uer.point <=10){return; // 값이 undefinded , null , 조건에 맞지 않는 경우 빨리 리턴하는것이 좋다. }// long upgrade loginc...
Fuction 종류
1.Function expression
constpring=fuction (){// amomymous function 이름이 없는 함수 console.log('print');};print();const pringAagin = print;pringAagin();const sumAgain = sum; console.log(sumAgaim(1,3));
2. Callback fuction using function expression
functionrandomQuiz(answer, printYes , printNo ){// 함수를 전달해서 상황에 맞는것을 출력하는것을 콜백함수라고 한다.if(answer ==='love you'){printYes(); // 정답이 love you 일때 }else{printNo(); } }// amomymous functionconstprintYes=function() {console.log('yes');}// named functionconstprintNo=functionprint(){console.log('no');}randomQuiz('wrong',printYes, printNo); // norandomQuiz('love you',printYes, printNo); //yes
3.Arrow function
constsimplePrint () =>consloe.log ('simplePrint');constadd= (a,b) => a + b; // 간결하게 사용이 가능하다.constsimpleMultiply= (a,b) =>{// {}블럭을 사용할 경우 받드시 return을 해주어야한다.return a * b;}