
원시 타입 : 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