Math.PI; // -> 3.141592653589793
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.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(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(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(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에서 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 범위의 정수
조금만 찾아보면 나오는 내용이지만, random메서드는 완벽한 난수생성이 안됨.
Math.random() 함수는 0부터 1 사이의 값을 무작위로 반환. 그러나 이 값은 컴퓨터에서 생성된 난수이므로, 사실상 예측 가능. 또한, Math.random() 함수는 난수의 분포도 균등하지 않음. 예를 들어, 0.5보다 작은 값이 0.5보다 큰 값보다 더 자주 생성. 이러한 문제는 보안 요구사항이 높은 시스템에서는 심각한 문제가 될 수 있음.
// node.js환경에서 crypto모듈 사용시.
const crypto = require('crypto');
// 16 bytes 길이의 보안용 난수 생성
const secureRandomBytes = crypto.randomBytes(16);
// 0~99 범위 내의 보안용 난수 생성
const secureRandomNumber = crypto.randomInt(0, 100);
Math.pow(2, 8); // -> 256
Math.pow(2, -1); // -> 0.5
Math.pow(2); // -> NaN
// ES7 지수 연산자
2 ** 2 ** 2; // -> 16
Math.pow(Math.pow(2, 2), 2); // -> 16
Math.max(1); // -> 1
Math.max(1, 2); // -> 2
Math.max(1, 2, 3); // -> 3
Math.max(); // -> -Infinity
// 배열 요소 중에서 최대값 취득
Math.max.apply(null, [1, 2, 3]); // -> 3
// ES6 스프레드 문법
Math.max(...[1, 2, 3]); // -> 3
// reduce를 통해 합계를 내는 코드 (apply)
const numbers = [1, 2, 3, 4, 5];
const sum = Array.prototype.reduce.apply(numbers, [
function(accumulator, currentValue) {
return accumulator + currentValue;
},
0
]);
console.log(sum); // 15
// apply(thisarg,[array]) 여기서 thisarg는 numbers라는 전역의 this를 설정 해주는거임.
// 그냥reduce만 쓰자면 이렇다.
const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
console.log(sum); // 15
// 스프레드 문법을 사용한 합계 코드
const numbers = [1, 2, 3, 4, 5];
const sum = Math.max(...numbers);
console.log(sum); // 5
Math.min(1); // -> 1
Math.min(1, 2); // -> 1
Math.min(1, 2, 3); // -> 1
Math.min(); // -> Infinity
// 배열 요소 중에서 최소값 취득
Math.min.apply(null, [1, 2, 3]); // -> 1
// ES6 스프레드 문법
Math.min(...[1, 2, 3]); // -> 1