원시 타입 : number, string, boolean, null, undefined, symbol
참조 타입 : object
: 64비트 부동소수점으로 표현 (Java의 double에 해당)
분류 | 예시 |
---|---|
지수 표기 (e) | -1e9 === -1 * (10 ** 9) |
지수 표기 (E) | E-7 === 10 ** (-7) |
2진수 (binary) | 0b111 |
8진수 (octal) | 0o127 |
16진수 (hexadecimal) | 0xff |
특수 값 | NaN (Not a Number) |
특수 값 | Infinity (무한대) |
소수점 계산
64bit의 소수점 숫자를 2진수로 변환 (컴퓨터는 2진수 사용)
→ 무한소수 생성 → 근삿값 계산으로 오차 발생
⇒ 자릿수에 대한 보정 필요① 10의 배수를 곱해 정수로 만든 후 계산
→ 곱한 수를 다시 나누어 실수로 변환②
Math.round(num)
함수 사용③
+num.toFixed(자릿수)
사용
(toFixed 메소드는 문자열을 반환하므로 단항연산자를 앞에 붙여 숫자로 변환)
: 작은따옴표나 큰따옴표로 표현
${...}
로 변수나 표현식 삽입 let myNum = 2;
console.log(`${myNum}의 두 배는 ${getTwice(myNum)}이다.`);
: 논리값 (true, false)
console.log(null == c); // true 동등
console.log(null === undefined); // false 불일치
: 유일한 값 (다른 어떤 값과 비교해도 true가 될 수 없는 고유한 변수)
→ 코드 내에서 유일한 값을 가진 변수 이름을 만들 때 사용
let sym = Symbol('변수에 대한 설명');
: 길이의 제약 없이 정수를 다룰 수 있게 해주는 숫자형
→ 자바스크립트에서 -(2**53 - 1) ~ (2**53 - 1)
의 숫자 범위를 초과하는 정숫값을 사용하면 연산에 미세한 오류 발생 → BigInt 도입
n
을 붙이거나, BinInt()
함수를 사용하여 표현const bigint1 = 9007199254740991n;
const bigint2 = BigInt(9007199254740991);
→ typeof 연산자 : 자료형을 문자열로 반환
console.log(typeof 9); // ‘number’
console.log(typeof null); // 'object'
→ Number(), parseInt(), parseFloat()
Number(true); // 1
Number(false); // 0
Number('two'); // NaN
parseInt(0033); // 27
parseInt(' 2'); // 2
parseFloat(“123.12345”); // 123.12345
→ String(), toString()
let num = 100;
String(num); // "100"
num.toString(); // "100"
num.toString(2); // "1100100"
→ Boolean()
Boolean(''); // false
Boolean(0); // false
Boolean(NaN); // false
Boolean(100); // true
Boolean([]); // true
+
연산자 제외 다른 연산자 -, *, /, %, \**, <, >, <=, >=
들은 숫자로 자동 형변환+
연산의 경우 string으로의 변환이 우선됨// 산술 연산
console.log('4' ** true); // 4
console.log(4 + ‘2’); // ‘42’
// 관계 비교 연산
console.log('two' > '1'); // false (NaN > 1 비교불가)
===, !==
→ 자료형까지 같은지 확인==, !=
→ 자동 형변환console.log(1 === '1'); // false
console.log(1 == ‘true’); // true