Function

설정·2021년 1월 6일

Function

  • function은 object이다.
    • 변수할당 가능
    • 파라미터로 전달가능
    • 함수 리턴 가능

  • Default parameters
    name='unknown'은 만약 함수를 실행했을 때 name을 전달해주지 않았다면 defaultunknown을 출력하게 해라.
function showMessage(message, name = 'unknown') {
  console.log(`${message} by ${name}`);
}

showMessage('hello');
// hello by unknown
  • Rest parameter
    함수안의 데이터를 출력해라.
function showAll(...args){
  ...
}
  • Local scope
    안에서는 밖에 접근이 가능하지만, 밖에서는 안을 접근할 수 없다.
# 예시 1
let global = 'global'; // 전역변수
function show() {
  let local = 'local'; // 지역변수
  console.log(local);
  console.log(global);
}

// local
// global

# 예시 2
let global = 'global'; // 전역변수

function show() { // 부모 함수
  let local = 'local'; // 지역변수
  console.log(local);
  console.log(global);
  
  function print() { // 자식함수
    console.log(local);
    let child = 'child'
    }
  console.log(child); // 에러발생(부모(show)에서 자식(print) 접근 불가)
}

자식의 함수가 부모함수에 접근을 가능하게 하는 것이 '클로저(Closure)'

  • Return a value

  • Early return, early exit
    조건이 맞지 않는 경우 빨리 return해라.

function upgradeUser(user) {
  if(user.point <= 10) {
    return
  }
  // upgrade logic
}
function randomQuiz(answer, yes, no) {
  if(answer === 'ok') {
    yes();
  } else {
    no();
  }
}

randomQuiz('no', yes, no); // no
randomQuiz('yes', yes, no); // yes

// yes()와 no() 함수는 만들어줘야하는데 지금은 함수 안만들었음
  • Arrow Function(화살표함수)
    화살표함수

  • IIFE
    함수선언과 동시에 호출

(function IIFE() {
  console.log('IIFE');
})();

// IIFE

0개의 댓글