[javascript] Function

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

links

social