본문 바로가기

Study/Today I Learn

[TIL] 2019.04.23 - new operator

new ?

javascript 코드를 작성하면서 자주 언급되는 new 키워드에 대해 정리해보려고 한다.

new

new 연산자는 사용자 정의 객체 타입 또는 내장 객체 타입의 인스턴스를 생성한다.

MDN 사이트에서 정의를 보면 단순이 사용자 정의 객체를 만드는 키워드같다. new 키워드 뒤에 오는 함수를 생성자 함수라고 부른다.

우리가 자주 사용하는 throw new Error("error :P") 명령어 역시 분해해보면

  • throw : 사용자 정의 예외를 던지는 방법, 즉시 함수의 실행을 종료함
  • new : 뒤에 오는 생성자함수를 이용해 새로운 사용자 객체 인스턴스를 만듬
  • Error : 오류 객체를 생성하는 생성자 함수. 첫번쨰 매개변수가 message임.

이므로 "error :P"가 message 인 오류 객체를 예외로 던지게 되는 코드이다.

필자는 항상 throw new Error()throw Error()의 차이가 궁금했는데 Error를 new 키워드없이 함수로 사용하게 되면 Error 객체를 리턴한다고 한다. 고로 둘의 동작이 똑같다는 것이다.

참고 사이트

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Error

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/new