프로그래밍 언어/JavaScript

[자바스크립트 필기] #16 - ES6 함수의 추가 기능

2021. 8. 10. 23:24

 

*이 필기는 웹 프로그래밍 튜토리얼에서 보고 작성합니다. 

 

1. 함수의 구분 

ES6 이전에는 동일한 함수라도 다양한 형태로 호출할 수 있었다. 

var foo = function () {
    return 1;
};

// 일반적인 함수
foo(); // -> 1

// 생성자 함수
new foo(); // -> foo {}

// 메서드 
var obj = { foo: foo};
obj.foo(); // -> 1

이 처럼 ES6 이전의 모든 함수는 일반 함수로서 호출할 수 있느 것은 물론 생성자 함수로서 호출할 수 있다. 

그래서 혼란스럽고 실수를 유발할 가능성이 있고 성능에도 좋지않다. 

그래서 ES6에서는 함수를 사용 목적에 따라 세 가지 종류로 명확히 구분했다. 

ES6 함수의 구분 constructor prototype super arguments
일반 함수 O O X O
메서드 X X O O
화살표 함수  X X X X

 

2. 메서드 

ES6 기준으로 메서드는 메서드 축약 표현으로 정의된 함수만을 의미한다. 

이 축약형으로 정의한 메서드는 인스턴스를 생성할 수 없는 non-constructor다. 

const obj = {
    x: 1,
    // foo는 메서드다 
    foo() {
        return this.x;
    },
    // bar에 바인딩된 함수는 일반 함수다. 
    bar: function() {
        return this.x;
    }
};

console.log(obj.foo()); // 1
console.log(obj.bar()); // 1

 

3. 화살표 함수 

function 키워드 대신 화살표( => )를 사용해서 간략하게 함수를 정의하는 방식이다. 

const multiply = (x, y) => x * y;
multiply(2, 3) // -> 6

 

함수 정의

무조건 함수 표현식으로 정의해야한다. 

 

매개변수 선언 

  • 여러개인 경우 소괄호 () 안에 매개변수를 선언한다. 
  • 한개라면 생략할 수 있다. 
  • 없는 경우에는 생략할 수 없다. 

함수 몸체 정의

함수 몸체가 하나의 문으로 구성된다면 중괄호 {} 를 생략할 수 있다. 

 

화살표 함수와 일반 함수의 차이

  • 화살표 함수는 non-constructor다.
  • 중복된 매개변수 이름을 선언할 수 없다. 
  • 화살표 함수는 함수 자체의 this, arguments, super, new.target 바인딩을 갖지 않는다. - 따라서 상위 스코프에서 참조를 한다. 

4. Rest 파라미터 

기본문법 

매개변수 이름 앞에 세개의 점 ... 을 붙인다. 이 Rest 파라미터는 함수에 전달된 인수들의 목록을 배열로 전달받는다. 

function foo(...rest) {
    console.log(rest); // [1, 2, 3, 4, 5]
}

foo(1, 2, 3, 4, 5);
  • Rest 파라미터는 반드시 마지막 파라미터이어야 한다. 
  • 단 하나만 선언할 수 있다. 

 

5. 매개변수 기본값

function sum(x = 0, y = 0) {
    return x + y;
}

console.log(sum(1, 2)); // 3
console.log(sum(1)); // 1

이러한 기본값은 인수를 전달하지 않은 경우와 undefined를 전달한 경우에만 쓸 수 있다. 

 

여기까지 입니다 - 틀린 점이 있다면 꼭 지적해주세요!

 

 

 

'프로그래밍 언어/JavaScript' 카테고리의 다른 글
  • [자바스크립트 필기] #18 - 이터러블
  • [자바스크립트 필기] #17 - Symbol 이란
  • [자바스크립트 필기] #15 - this란?
  • [자바스크립트 필기] #14 - 빌트인 객체
SpaceCowboy
SpaceCowboy
공부한거 기록하는 블로그입니다!!
SpaceCowboy
공부한거 기록하는 블로그
SpaceCowboy
전체
오늘
어제
  • 분류 전체보기
    • 프로그래밍 언어
      • C Programming
      • JavaScript
    • Computer Science
      • 자료구조
      • 알고리즘
      • 객체지향
    • 프레임워크
      • Nest.js
      • TypeORM
    • Web Programming
    • 블록체인
      • 기초
    • 데브옵스
      • Git
      • Docker

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • typeorm0.3
  • CSS
  • 자바스크립트챌린지
  • 이중연결리스트
  • nestjs
  • 복습
  • JS
  • typeorm3.0
  • 자바스크립트
  • softDelete
  • 재귀
  • 자바스크립트 필기
  • typeormseeding
  • customrepository
  • TypeORM
  • 논리삭제
  • 자료구조필기
  • HTML
  • 자료구조
  • 자바스크립트필기

최근 댓글

최근 글

hELLO · Designed By 정상우.
SpaceCowboy
[자바스크립트 필기] #16 - ES6 함수의 추가 기능
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.