표준 빌트인 객체 Number
생성자 함수 객체이므로, new와 함께 호출 하여 인스턴스를 생성할 수 있다.
new 연산자를 사용하지 않고 호출하면, Number인스턴스가 아닌 숫자를 반환하고, 이를 통해 명시적으로 타입을 변환하기도 한다.
Number(true) // 1
Number(false) // 0
Number('0') // 0
Number.EPSILON
Number.EPSILON은 2.2204460492503130808472633361816E-16 값으로,
1과 1보다 큰 숫자 중에서 가장 작은 숫자와의 차이와 같다. (이게 몬소리지? 아래 예제를 보자)
부동소수점 산술 연산은 정확한 결과를 기대하기 어렵다.
0.1 + 0.2; // 0.30000000000000004
0.1 + 0.2 === 0.3 // false
function isEqual(a,b){
// a-b를 한 절대값이 Number.EPSILON보다 작으면 같은 수로 인정한다.
return Math.abs(a-b) < Number.EPSILON;
}
isEqual(0.1+0.2, 0.3) // true
Number.MAX_VALUE
자바스크립트에서 표현할 수 있는 가장 큰 양수 값 1.7976931348623157e+308
이보다 더 크면 Infinity다.
Number.MIN_VALUE
자바스크립트에서 표현할 수 있는 가장 작은 양수 값 5e-324 (5*10의 -324승)
이보다 작으면 0이다.
Number.NaN
Not-a-Number. window.NaN과 같다.
NaN끼리는 비교시 모두 false다.
NaN === NaN // false
Number.NaN === NaN // false
Number.NaN === window.NaN // false
const test = Math.max('hello',3) // NaN
test == NaN //false
Number.isNaN
인수로 전달된 값이 NaN인지 검사하여 결과를 boolean값으로 반환한다.
const test = Math.max('hello',3)
isNaN(test) // true
isNaN(NaN) // true 빌트인 전역함수인 isNaN은 인수를 숫자로 암묵적 타입변환 한다.
Number.isNaN(NaN) // true
Number.isNaN('this is string') // false. 숫자가 아닌 인수가 주어졌을때 언제나 false다
isNaN('this is string') // true
빌트인 전역객체인 isNaN은 전달받은 인수를 암묵적으로 숫자로 타입변환 시킨다.
Number.isNaN 메서드는 숫자가 아닌 인수를 전달받으면 언제나 false다.
Number.prototype.toFixed
숫자를 반올림하여 문자열로 반환한다.
(1234.5678).toFixed(); // "1235"
(1234.5678).toFixed(1); // "1234.6" 소수점 1자리까지 보여줌
Number.prototype.toString
숫자를 문자열로 변환하여 반환한다. 2~36 사이 정수값을 인수로 전달하면 n진법 문자열을 반환한다.
(1234).toString(); // '1234'
(1234).toString(2); // '10011010010' 2진법 문자열으로 변환
(1234).toString(16); // '4d2' 16진법 문자열로 반환 (0~9 A~F)
표준 빌트인 객체 Math
Math는 생성자 함수가 아니므로 정적 프로퍼티와 정적메서드만 제공한다.
Math.PI
Math.PI는 Math 프로퍼티이다. 원주율 PI값을 반환한다.
Math.PI // 3.141592653589793
Math.abs
abs가 뭔뜻이지 했는데 'absolute value'의 세음절이였다. (아하..?)
인수로 전달된 숫자의 절대값을 반환한다. 절대값은 반드시 0이상의 양수이어야한다.
빈값은 NaN
Math.abs(-1) // 1
Math.abs(-328) // 328
Math.abs("294") // 294
Math.abs('') // 0
Math.abs(null) // 0
Math.abs(undefined) // NaN
Math.abs({}) // NaN
Math.abs("hello") // NaN
Math.abs() // NaN
Math.round
인수로 전달된 숫자의 소수점 이하를 반올림한 정수를 반환한다.
빈값은 NaN
Math.round(1.6) // 2
Math.round(-1.6) // -2
Math.round('3.2') // 3 string도 숫자로 형변환
Math.round(); // NaN
Math.ceil
인수로 전달된 숫자의 소수점 이하를 올림.
올림하면 더 큰수가 된다. 빈값은 NaN
Math.ceil(1.1) // 2
Math.ceil(-1.1) // -1
Math.ceil('3.1') // 4 string도 숫자로 형변환
Math.ceil() // NaN
Math.floor
인수로 전달된 숫자의 소수점 이하를 내림.
내림하면 더 작은수가 된다. 빈값은 NaN
Math.floor(1.9) // 1
Math.floor(-1.5) // -2 음수면 숫자가 커져야 더 작은값이니까..
Math.floor() // NaN
Math.sqrt
인수로 전달된 숫자의 제곱근을 반환한다.
빈값은 NaN
Math.sqrt(9) // 3
Math.sqrt(2) // 1.4142135623730951
Math.sqrt(-9) // NaN 제곱근은 음수가 나올수없음
Math.sqrt() // NaN
Math.random
0부터 1미만의 실수를, 임의의 난수(랜덤숫자)로 반환한다. (0포함 1미포함)
Math.random() // 0.3527292457067417 같은 무작위값이 나옴
Math.floor(Math.random() * 10) // 0 ~ 9까지의 랜덤값이 나옴
Math.pow
pow는 power의 약자고, 수학에서는 거듭제곱을 의미한다.
첫번째 인수를 밑으로, 두번째 인수를 지수로 거듭제곱한 결과를 반환한다.
Math.pow(2, 8) // 256 (2의 8제곱)
Math.pow(2, -1) // 0.5 (2의 -1제곱)
Math.pow(2) // NaN (2의 undefiend제곱)
*Math.pow보다 ES7에서 도입된 지수연산자를 사용하는게 더 가독성이 좋다.
2 ** 8 // 256
2 ** 2 ** 2 // Math.pow(2, Math.pow(2, 2)); // 16 pow는 뒤쪽 부터다
2 ** 2 ** 3 // Math.pow(2, Math.pow(2, 3)) // 256 당연히 앞에꺼먼저 계산인줄알았는데 뒤부터 pow시킨다
(2 ** 2) ** 3 // Math.pow(Math.pow(2,2),3) // 64 앞에꺼먼저 해주려면 괄호 써야한다
헷갈리게도 만들어놨다..
Math.max
인수 중 가장 큰 수를 반환한다.
Math.max(1,3,5,7,9) // 9
Math.max(...[1,3,5,7,9]) // 9
Math.max() //Infinity
Math.min
인수 중 가장 작은 수를 반환한다.
Math.min(1,3,5,7,9) // 1
Math.min(...[1,3,5,7,9]) // 1
Math.min() // Infinity
'[STUDY] 스터디 > Deep Dive JS' 카테고리의 다른 글
js 이터러블과 스프레드(...)문법 그리고 디스트럭처링 할당 (0) | 2023.01.14 |
---|---|
js Symbol / 변경불가능한 유일무이 값 (0) | 2023.01.12 |
js Array (0) | 2022.12.31 |
js 클래스 (0) | 2022.12.31 |
ES6 함수의 추가기능 / ES6 화살표 함수, ...rest (0) | 2022.12.31 |