Post

[모던 자바스크립트 Deep Dive]29장 Math

  • 표준 빌트인 객체
  • 수학적인 상수와 함수를 위한 프로퍼티와 메서드 제공
  • 생성자 함수가 아니기 때문에 정적 프로퍼티와 정적 메서드만 제공

29.1 Math 프로퍼티

29.1.1 Math.PI

1
Math.PI; // -> 3.141592653589793
  • 원주율 PI값 반환

29.2 Math 메서드

29.2.1 Math.abs

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
  • 인수로 전달된 숫자의 절댓값 반환
    • 절댓값은 반드시 0 또는 양수

29.2.2 Math.round

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

29.2.3 Math.ceil

1
2
3
4
5
6
Math.ceil(1.4);  // -> 2
Math.ceil(1.6);  // -> 2
Math.ceil(-1.4); // -> -1
Math.ceil(-1.6); // -> -1
Math.ceil(1);    // -> 1
Math.ceil();     // -> NaN
  • 인수로 전달된 숫자의 소수점 이하를 올림 한 정수 반환
    • 소수점 이하를 올림 ⇒ 더 큰 정수가 됨

29.2.4 Math.floor

1
2
3
4
5
6
Math.floor(1.9);  // -> 1
Math.floor(9.1);  // -> 9
Math.floor(-1.9); // -> -2
Math.floor(-9.1); // -> -10
Math.floor(1);    // -> 1
Math.floor();     // -> NaN
  • 인수로 전달된 숫자의 소수점 이하를 내림한 정수 반환
    • 소수점 이하를 내림 ⇒ 더 작은 정수가 됨

29.2.5 Math.sqrt

1
2
3
4
5
6
Math.sqrt(9);  // -> 3
Math.sqrt(-9); // -> NaN
Math.sqrt(2);  // -> 1.414213562373095
Math.sqrt(1);  // -> 1
Math.sqrt(0);  // -> 0
Math.sqrt();   // -> NaN
  • 인수로 전달된 숫자의 제곱근을 반환

29.2.6 Math.random

1
2
3
4
5
6
7
8
9
10
11
Math.random(); // 0에서 1 미만의 랜덤 실수(0.8208720231391746)

/*
1에서 10 범위의 랜덤 정수 취득
1) Math.random으로 0에서 1 미만의 랜덤 실수를 구한 다음, 10을 곱해 0에서 10 미만의
랜덤 실수를 구한다.
2) 0에서 10 미만의 랜덤 실수에 1을 더해 1에서 10 범위의 랜덤 실수를 구한다.
3) Math.floor로 1에서 10 범위의 랜덤 실수의 소수점 이하를 떼어 버린 다음 정수를 반환한다.
*/
const random = Math.floor((Math.random() * 10) + 1);
console.log(random); // 1에서 10 범위의 정수
  • 0 이상 1 미만의 임의의 난수를 반환

29.2.7 Math.pow

1
2
3
Math.pow(2, 8);  // -> 256
Math.pow(2, -1); // -> 0.5
Math.pow(2);     // -> NaN
  • 첫 번째 인수를 밑으로, 두 번째 인수를 지수로 거듭제곱한 결과를 반환
  • ES7에서 도입된 지수 연산자가 가독성이 더 좋다.

    1
    2
    3
    
      // ES7 지수 연산자
      2 ** 2 ** 2; // -> 16
      Math.pow(Math.pow(2, 2), 2); // -> 16
    

29.2.8 Math.max

1
2
3
4
Math.max(1); // -> 1
Math.max(1, 2); // -> 2
Math.max(1, 2, 3); // -> 3
Math.max(); // -> -Infinity
  • 전달받은 인수 중 가장 큰 수를 반환
    • 인수를 생략하면 -Infinity 반환
  • 배열의 요소 중 최댓값을 구하기 위해 배열을 인수로 전달하는 경우
    • Function.prototype.apply 메서드를 사용

      1
      2
      
        // 배열 요소 중에서 최대값 취득
        Math.max.apply(null, [1, 2, 3]); // -> 3
      
    • 스프레드 문법을 사용

      1
      2
      
        // ES6 스프레드 문법
        Math.max(...[1, 2, 3]); // -> 3
      

29.2.9 Math.min

1
2
3
4
Math.min(1); // -> 1
Math.min(1, 2); // -> 1
Math.min(1, 2, 3); // -> 1
Math.min(); // -> Infinity
  • 전달받은 인수 중 가장 작은 수를 반환
    • 인수를 생략하면 Infinity 반환
  • 배열의 요소 중 최솟값을 구하기 위해 배열을 인수로 전달하는 경우
    • Function.prototype.apply 메서드를 사용

      1
      2
      
        // 배열 요소 중에서 최소값 취득
        Math.min.apply(null, [1, 2, 3]); // -> 1
      
    • 스프레드 문법을 사용

      1
      2
      
        // ES6 스프레드 문법
        Math.min(...[1, 2, 3]); // -> 1
      
This post is licensed under CC BY 4.0 by the author.