29장 Math

29.1 Math 프로퍼티

  • 표준 빌트인 객체인 Math는 정적 프로퍼티와 정적 메서드만 제공(생성자 함수가 아니다)

29.1.1 Math.PI(29-01)

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

29.2 Math 메서드

29.2.1 Math.abs(29-02)

  • 0 또는 양수인 절대값으로 반환
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

29.2.2 Math.round(29-03)

  • 소수점 이하를 반올림한 정수를 반환
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(29-04)

  • 소수점 이하를 올림한 정수를 반환
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(29-05)

  • 소수점 이하를 내림한 정수를 반환
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(29-06)

  • 인수의 제곱근을 반환
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(29-07)

  • 난수(랜덤 숫자)를 반환
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 범위의 정수

29.2.7 Math.pow(29-08)

  • 인수 첫(밑), 둘째(지수)로 거듭제곱한 결과를 반환
Math.pow(2, 8);  // -> 256
Math.pow(2, -1); // -> 0.5
Math.pow(2);     // -> NaN

29-09

  • ES7에서 도입된 지수 연산자가 더욱 가독성 높음
// ES7 지수 연산자
2 ** 2 ** 2; // -> 16
Math.pow(Math.pow(2, 2), 2); // -> 16

29.2.8 Math.max(29-10)

  • 인수 중에서 최대값 반환

  • 인수가 없다면 -Infinity 반환

Math.max(1); // -> 1
Math.max(1, 2); // -> 2
Math.max(1, 2, 3); // -> 3
Math.max(); // -> -Infinity

29-11

  • 배열의 최대값을 구하기 위해서는 apply 또는 스프레드 문법을 활용
// 배열 요소 중에서 최대값 취득
Math.max.apply(null, [1, 2, 3]); // -> 3

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

29.2.9 Math.min(29-12)

  • 인수 중에서 최소값을 반환

  • 인수가 없다면 Infinity 반환

Math.min(1); // -> 1
Math.min(1, 2); // -> 1
Math.min(1, 2, 3); // -> 1
Math.min(); // -> Infinity

29-13

  • max처럼 min도 배열에선 apply나 스프레드 문법을 활용 해야함
// 배열 요소 중에서 최소값 취득
Math.min.apply(null, [1, 2, 3]); // -> 1

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

댓글남기기