Javascript 36장 - Number와 Math
포스트
취소

Javascript 36장 - Number와 Math

Javascript

  • 처음부터 다시 보는 딥 다이브

Number 생성자 함수

  • 표준 빌트인 객체인 Number 객체는 생성자 함수 객체이다.
  • new 연산자와 함께 호출하여 Number 인스턴스를 생성할 수 있다.
  • 인수를 전달하지 않고 생성하면 [[NumberData]]에 0을 할당한 Number 래퍼 객체를 생성한다.
  • ES5에서는 [[PrimitiveValue]] 내부 슬롯이라 불렸다.
  • 인수로 문자열을 숫자 값을 전달한 경우, 타입을 강제 변환 후 객체를 생성한다.
  • 인수로 숫자가 아닌 문자열을 전달한 경우, NaN이 할당된 Number 객체를 생성한다.
  • new Number를 통해 추가적인 프로퍼티를 생성하여 사용할 수 있지만 예측 불가능한 동작을 일으킬 수 있기 때문에 권장되지 않는다.
  • 일반적으로 할당되는 원시값과 달리 객체를 생성하기 때문에 성능 면에서도 비효율적이다.
1
new Number(2); // Bug Finder: Do not use Number as a constructor. 현재 X

Math

  • 표준 빌트인 객체이지만 생성자 함수는 아니다.
  • 정적 메서드와 정적 프로퍼티만 제공된다.

Math.abs

  • 인수로 전달된 숫자의 절대값을 반환한다.
  • 절대값은 반드시 0또는 양수여야 한다.
1
2
3
4
5
6
7
8
9
Math.abs(-1); // 1
Math.abs("-1"); // 1
Math.abs(""); // 0
Math.abs([]); // 0
Math.abs(null); // 0
Math.abs(undefined); // NaN
Math.abs({}); // NaN
Math.abs("string"); // NaN
Math.abs(); // NaN

Math.round

  • 인수로 전달된 숫자의 소숫점 이하를 반올리한 정수를 반환한다.
1
2
3
4
5
6
Math.round(1.4); // 1
Math.round(1.5); // 2
Math.round(-1.4); // -1
Math.round(-1.5); // -1
Math.round(-1.6); // -2
Math.round(); // NaN

Math.ceil

  • 인수로 전달된 숫자의 소숫점 이하를 올림한 정수를 반환한다.
1
2
3
4
5
Math.ceil(1.4); // 2
Math.ceil(1.5); // 2
Math.ceil(-1.4); // -1
Math.ceil(-1.5); // -1
Math.ceil(-1.6); // -1

Math.floor

  • 인수로 전달된 숫자의 소숫점 이하를 내림한 정수를 반환한다.
1
2
3
4
5
Math.floor(1.4); // 1
Math.floor(1.5); // 1
Math.floor(-1.4); // -2
Math.floor(-1.5); // -2
Math.floor(-1.6); // -2

Math.sqrt

  • 인수로 전달된 숫자의 제곱근을 반환한다.
1
2
3
Math.sqrt(1); // 1
Math.sqrt(4); // 2
Math.sqrt(9); // 3

Math.random

  • 임의의 난수를 반환한다.
  • 난수의 범위는 0 <= Math.random <= 1의 실수다.
1
const random = Math.floor(Math.random() * 10 + 1);

Math.pow

  • 인수로 전달된 숫자의 거듭제곱한 결과를 반환한다.
  • 인수는 2개를 전달받으며, 첫 번째 인수로는 밑, 두 번째 인수로는 지수를 전달받는다.
  • ES7에서 ** 연산자를 사용하여 이를 대체한다.

Math.max, min

  • 전달받은 인수 중에서 가장 크거나 작은 수를 반환한다.
  • 인수가 전달되지 않으면 무한대를 반환한다.
  • 배열의 요소 중 최대값을 구할 시 스프레드 문법을 사용하거나 apply를 사용한다.
1
2
3
4
const arr = [1, 2, 3, 4, 5];

Math.max(...arr);
Math.max.apply(null, arr);
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.