function
명명규칙
- 변수명은 명사, 함수명은 동사로
- doPunching, punch
함수의 특징
- 자바스크립트에서 함수는 object이다
- 변수에 함수를 할당할 수 있다는 뜻
default 파라미터
const myNm = 'woogie';
function sayHello(whoNm = 'everyOne'){
console.log(`Hi, ${whoNm}`);
}
sayHello(myNm); -> Hi, woogie
sayHello(); -> Hi, everyOne
rest 파라미터
function showList(...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));
}
showList('woogie1', 'woogie2', 'woogie3');
-> woogie1
-> woogie2
-> woogie3 로 결과는 같음
early return, early exit
- 조건이 안맞는 경우를 먼저 체크해서 빨리 리턴 시켜라
- 코드의 가독성이 좋아짐
function showNumber(num){
if(num > 10){
return;
}
num += 10;
console.log('plus 10');
return num;
}
const resultNum = showNumber(15);
console.log(`result: ${resultNum}`);
-> result: undefined
anonymous function
const sayAnonymous = function(){
console.log('say');
console.log('anonymous');
}
sayAnonymous();
callback
const sayYes = function() {
console.log('Yes');
}
const sayNo = function() {
console.log('No');
}
doMark('woogie', sayYes, sayNo);
function doMark(answer, func1, func2){
if(answer === 'woogie' ? func1() : func2());
}
arrow function(람다)
- 항상 이름이 없는 anonymous function
- function이라는 키워드를 쓸 필요가 없다
- 괄호를 쓰지 않으면 return 이라는 키워드를 사용할 필요도 없다.
- 함수 안에 this. 키워드가 들어가는 경우 사용 자제
- 람다 함수는 선언과 동시에 this를 고정하기 때문
const addSimple = (a,b) => a+b;
const addComplex = (a,b) => {
return a+b;
}
console.log(addSimple(1,5)); -> 6
console.log(addComplex(1,5)); -> 6
IIFE: Immediately Invoked Function Expression
(
function iifeFunction() {
console.log('Call immediately');
}
)();
-> Call immediately