본문 바로가기
PROGRAMMING/JavaScript

[JS] 함수

by 안녕나는현서 2021. 11. 12.
728x90

함수

  • 참조 타입 중 하나
  • function 타입
  • 함수 정의하는 방법: 함수 선언식, 함수 표현식
  • JavaScript의 함수는 일급 객체(First-class citizen)에 해당
    • 다른 객체들에 적용할 수 있는 연산을 모두 지원하는 객체(함수)
    • 변수에 할당 가능
    • 함수의 매개변수로 전달 가능
    • 함수의 반환 값으로 사용 가능

 

- 함수 선언식 (function statement, declaration)

function name(args) {
  // do something
}
  • 함수의 이름과 함께 정의하는 방식
  • name: 함수의 이름
  • args: 매개변수
  • 호이스팅 발생
    • 함수 호출 이후에 선언해도 동작

 

- 함수 표현식 (function expression)

const myFunction = function (args) {
  // do something
}
  • 함수를 표현식 내에서 정의하는 방식
  • 함수의 이름을 생략하고 익명 함수로 정의 가능
  • 호이스팅 발생하지 않음
    • 함수 정의 전에 호출 시 에러 발생
    • 함수 표현식으로 정의된 함수는 변수로 평가되어 변수의 scope 규칙을 따름

 

* 기본 인자 (default arguments)

  • 인자 작성 시 '=' 문자 뒤 기본 인자 선언 가능
function name(args = 'default') {
  // do something
}

 

- Arrow Function

  • 함수를 비교적 간결하게 정의할 수 있는 문법
  • functino 키워드 생략 가능
  • 함수의 매개변수가 하나 뿐이라면 () 생략 가능
  • 함수의 몸통이 표현식 하나라면 {}, return 생략 가능
const arrow = function (name) {
  return `hello! ${name}`
}

// 1. function 키워드 삭제
const arrow = (name) => { return `hello! ${name}` }
// 2. () 생략
const arrow = name => { return `hello! ${name}` }
// 3. {}, return 생략
const arrow = name => `hello! ${name}`
728x90

'PROGRAMMING > JavaScript' 카테고리의 다른 글

[JS] AJAX, Concurrency model, Promise, Axios  (0) 2021.11.14
[JS] 배열 관련 메서드  (0) 2021.11.12
[JS] 조건문, 반복문  (0) 2021.11.12
[JS] 식별자, 변수, 타입, 연산자  (0) 2021.11.12
[JS] DOM 조작 (선택, 변경)  (0) 2021.11.12

댓글