29장 Math


표준 빌트인 객체 Math는 수학적인 상수와 함수를 위한 프로퍼티와 메서드들을 제공하낟.

Math 프로퍼티

Math.PI

PI 반환

Math.PI; // -> 3.141592653589793

Math 메서드

Math.abs

절대값 반환.

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

소수점 이하 반올림하여 정수를 반환한다.
사사오입으로 반올림 된다.
사사오입과 오사오입의 차이는 반올림 사사오입, 오사오입 참고.

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

Math.ceil

소수점 이하 올림하여 정수 반환.

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

Math.floor

소수점 이하 내림 정수 반환.

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

Math.sqrt

숫자의 제곱근 반환.

Math.sqrt(9);  // -> 3
Math.sqrt(-9); // -> NaN
Math.sqrt(2);  // -> 1.414213562373095
Math.sqrt(1);  // -> 1
Math.sqrt(0);  // -> 0
Math.sqrt();   // -> NaN

Math.random

0<= x < 1 범위의 실수인 난수를 반환.

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 범위의 정수

Math.pow

첫번째 인수를 밑으로 두번째 인수로 거듭제곱

Math.pow(2, 8);  // -> 256
Math.pow(2, -1); // -> 0.5
Math.pow(2);     // -> NaN

ES7 에서부터 지수 연산자 도입되어서 지수 연산자 사용하는 편이 좋다.

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

Math.max

전달받은 인수 중에서 가장 큰 수를 반환. 인수가 전달되지 않으면 -Infinity 반환.

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

배열 요소 중에서 최대값을 구하려면 apply 메서드를 사용하거나 스프레드 문법을 사용하면 된다.

// 배열 요소 중에서 최대값 취득
Math.max.apply(null, [1, 2, 3]); // -> 3

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

Math.min

전달 받은 인수 중에서 가장 작은 수 반환. 전달되지 않으면 Infinity 반환

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

마찬가지로 apply와 스프레드 문법 사용해서 배열의 요소 중에서 최소값을 구할 수 있다.

// 배열 요소 중에서 최소값 취득
Math.min.apply(null, [1, 2, 3]); // -> 1

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

reference