220916_TIL
오늘 한 일
- 자바스크립트 빌트 인 객체 등 강의듣기
- 딥다이브 자바스크립트
// 래퍼 객체 (Wrapper Object)
// 원시값을 필요에 따라서 관련된 빌트인 객체로 변한한다.
const number = 123; // number 원시 타입
// number 원시타입을 감싸고 있는 Number라는 클래스인 객체로 감싸짐
console.log(number.toString());
console.log(number); // number 원시타입
const text = 'text'; // string 문자열 원시타입
console.log(text);
text.length; // String 객체
text.trim();
// 객체는 값 뿐만 아니라 함수 등 다양한 정보를 갖고 있기 때문에
// 원시타입보다 훨씬 무겁고 메모리를 많이 차지한다.
const num1 = 123;
const num2 = new Number(123);
console.log(typeof num1);
console.log(typeof num2);
console.log(Number.MAX_VALUE);
// 앞에 숫자 * 10의 308승 (e = 10을 의미)
console.log(Number.MAX_VALUE); // 정수에서 사용가능한 가장 큰 숫자
console.log(Number.MIN_VALUE);
console.log(Number.MAX_SAFE_INTEGER); // 안전하게 사용할 수 있는 최댓값
console.log(Number.MIN_SAFE_INTEGER);
console.log(Number.NaN);
console.log(Number.NEGATIVE_INFINITY);
console.log(Number.POSITIVE_INFINITY);
if (num1 < Number.MAX_VALUE) {
}
if (Number.isNaN(num1)) {
}
// 지수표기법 (매우 크거나 작은 숫자를 표기할 때 사용, 10의 n승으로 표기)
const num3 = 102;
console.log(num3.toExponential()); // 지수로 표기할 수 있음
// 숫자를 반올림하여 문자열로 반환
const num4 = 1234.12;
console.log(num4.toFixed()); // 실수가 정수로 변환되어 문자열로 반환됨
console.log(num4.toString()); // 숫자 자체를 그대로 문자열로 반환됨
console.log(num4.toLocaleString('ar-EG')); // 그 나라의 언어에 맞게 숫자를 표기하는 법
// 원하는 자릿수까지 유효하도록 반올림
console.log(num4.toPrecision(5)); // 1234.12 중 5번째까지만 유효하게 함 -> 1234.1 출력
console.log(num4.toPrecision(4)); // 1234
console.log(num4.toPrecision(2)); // 전체자릿수 표기가 안될 때는 지수표기법으로 반환됨.
// console.log(Number.EPSILON); // 0과 1 사이에서 나타낼 수 있는 가장 작은 숫자를 반환함.
if (Number.EPSILON > 0 && Number.EPSILON < 1) {
console.log(Number.EPSILON);
}
const num = 0.1 + 0.2 - 0.2; // 0.10000000000000003
console.log(num);
function isEqual(original, expected) {
return Math.abs(original - expected) < Number.EPSILON; // return original === expected;
}
console.log(isEqual(1, 1));
console.log(isEqual(0.1, 0.1));
console.log(isEqual(num, 0.1)); // false
// 10진수를 각각 2진수로 변환해서 계산 후 다시 10진수를 변환하는 과정 중 생기는 오차
// 이런 작은 오차를 나타내는 것이 EPSILON이라고 볼 수 있다.
// Math
// static properties, method
console.log(Math.E); // 오일러의 상수, 자연로그의 밑에서 사용하는 값
console.log(Math.PI); // 원주율 PI값
// static method
// 절대값
console.log(Math.abs(-10)); // 10
// 소수점 이하를 무조건 올림
console.log(Math.ceil(1.4)); // 2
// 소수점 이하를 무조건 내림
console.log(Math.floor(1.4)); // 1
// 소수점 이하를 반올림
console.log(Math.round(1.4)); // 1
console.log(Math.round(1.5)); // 2
// 정수만 반환 (밑에 있는 소수점들은 다 버리는 것)
console.log(Math.trunc(1.542)); // 1
// 자주사용하는 Math 함수
// 지정된 숫자 중 최대, 최소값을 찾아주고 반환
console.log(Math.max(1, 3, 4)); // 3
console.log(Math.min(1, 3, 4)); // 1
// 거듭제곱
console.log(3 ** 2); // 9
console.log(Math.pow(3, 2)); // 9
// 제곱근
console.log(Math.sqrt(9)); // 어떤 숫자를 2번 곱해야 9가 되는지 출력됨
// 0 ~ 1 사이의 랜덤한 값을 반환
console.log(Math.random()); //
// 1 ~ 10
console.log(Math.floor(Math.random() * 10 + 1));
오늘 느낀 점
- 다양한 내장함수가 있고 여기서 자주 사용하는 Math와 연관된 메서드 등
은 어느정도 숙지해야겠다고 생각했다.
- 객체를 이용하는 방법이 있지만 내용이 너무 뚱뚱하기 때문에 애플이나 사이트 용량을 많이 차지한다는 이유가 있어서 되도록 원시값을 이용하고 꼭 필요할 때 이용해야겠다는 점이 중요한 것 같다.
댓글남기기