📌 Math 객체는 수학 상수와 함수를 위한 프로퍼티, 메소드를 미리 구현해 놓은 빌트인 객체이다.
📌 생성자(constructor)가 존재하지 않는다. Static 프로퍼티와 메소드만 제공하기 때문에 인스턴스를 생성할 필요 없이 바로 사용 가능하다.
📌 Math 객체는 정말 많은 메소드를 제공하는데 이 글에서는 자주 사용하거나 유용하게 사용하는 메소드만 알아본다.
Math.random(); // 기본 랜덤 메소드 호출, 0.9854658496
(Math.random() * 10).toFixed(); // 0~10 랜덤 수 리턴 (String)
Math.round(Math.random() * 10)); // 0~10 랜덤 수 리턴 (Number)
Math.abs(-1); // 1
Math.abs(1); // 1
Math.abs('-1'); // 1
Math.abs(1.23); // 1.23
Math.abs(-1.23); // 1.23
Math.abs(''); // 0
Math.abs([]); // 0
Math.abs(null); // 0
Math.abs(undefined); // NaN
Math.abs({}); // NaN
Math.abs('Hello'); // NaN
Math.min(); // infinity
Math.min(1, -2, 3, -1, 50); // -2
Math.min(1, -4, 6, 10, 'Hello', 32) // NaN
let arr = [1, 2, 3, 4, 5];
console.log(Math.min(arr)); // NaN
console.log(Math.min(...arr)); // 1
console.log(Math.min.apply(null, arr)); // 1
Math.max(); // infinity
Math.max(1, -2, 3, -1, 50); // 50
Math.max(1, -4, 6, 10, 'Hello', 32) // NaN
let arr = [1, 2, 3, 4, 5];
console.log(Math.max(arr)); // NaN
console.log(Math.max(...arr)); // 5
console.log(Math.max.apply(null, arr)); // 5
Math.round(1.2345); // 1
Math.round(1.5678); // 2
Math.round(1); // 1
Math.round(0); // 0
Math.round(0.5); // 1
Math.round(); // NaN
Math.round('Hello'); // NaN
Math.floor(1.2345); // 1
Math.floor(1.5678); // 1
Math.floor(1) // 1
Math.floor(-0.95); // -1
Math.floor(-1.234); // -2
Math.floor(); // NaN
Math.floor('Hello'); // NaN
Math.ceil(1.2345); // 2
Math.ceil(1.5678); // 1
Math.ceil(1) // 1
Math.ceil(-0.95); // -0
console.log(0 === Math.ceil(-0.95)) // true
Math.ceil(-1.234); // -2
Math.ceil(); // NaN
Math.ceil('Hello'); // NaN
Math.E; // 약2.718, 오일러 수(e), 자연로그(natural logarithms)의 밑(base) 값
Math.LN10; // 약 2.303, 10의 자연로그 값
Math.LN2; // 약 0.693
Math.LOG10E ; // 약 0.434, 오일러 수(e)의 밑 값이 10인 로그 값
Math.LOG2E; // 약 1.443, 오일러 수(e)의 밑 값이 2인 로그 값
Math.PI; // 약 3.14, 원의 원주를 지름으로 나눈 비율(원주율) 값
Math.SQRT1_2; // 약 0.707, 2의 제곱근의 역수 값
Math.SQRT2; // 약 1.414, 2의 제곱근 값