
JavaScript를 배우다 보면 가장 먼저 만나는 놈들이 있다. 바로 숫자(Number) 와 문자열(String)이다.
계산을 하든 텍스트를 후려 다루든, 결국 모든 로직은 이 둘 위에 올려놓고 굴려진다. 이번 장에서는 숫자와 문자열이 어떤 식으로 표현되고, 또 어떤 도구들을 통해 활용할 수 있는지 차근차근 살펴보겠다.
JavaScript의 숫자는 모두 64비트 부동소수점(IEEE 754) 형식으로 표현된다.
즉, 정수와 소수를 따로 구분하지 않고 하나의 그릇에 담아 관리한다.
Infinity, Infinity, NaN.console.log(1 / 0); // Infinity
console.log(-1 / 0); // -Infinity
console.log(0 / 0); // NaN
숫자를 적는 방법은 여러 가지가 있다.
0b 접두어0o 접두어0x 접두어42
0b1010
0o755
0xFF
지수 표기도 가능하다.
5e1 // 50
1e-3 // 0.001
긴 숫자는 _ 구분자로 읽기 쉽게 쓸 수 있다.
1_000_000_000
0xA0_B0_C0
숫자와 관련된 상수와 유틸리티 메서드들이 모여 있다.
console.log(Number.MAX_SAFE_INTEGER); // 9007199254740991
console.log(Number.EPSILON); // 2.220446049250313e-16
판별용 메서드도 있다.
Number.isFinite(123); // true
Number.isInteger(3.14); // false
Number.isNaN(NaN); // true
출력 형식 제어:
let n = 1234.567;
n.toFixed(2); // "1234.57"
n.toExponential(); // "1.234567e+3"
수학 계산이 필요할 때 쓰는 내장 객체다. 직접 만들 필요 없이 바로 가져다 쓴다.
Math.PI; // 원주율
Math.sqrt(16); // 4
Math.random(); // 0 이상 1 미만 난수
Math.max(1, 5); // 5
삼각함수, 로그, 올림/내림 같은 다양한 메서드가 준비돼 있다.
Number 타입은 ±(2^53 − 1)을 넘어가면 정밀도가 무너진다. 그 이상의 큰 정수를 다루려면 BigInt를 쓴다.
const big = 123456789012345678901234567890n;
console.log(big * 2n); // 정확하게 연산됨
Math 함수와는 함께 사용할 수 없다.문자열은 텍스트 데이터를 담는 타입이다. 내부적으로 UTF-16 코드 단위로 구성되며, 첫 글자는 인덱스 0부터 시작한다.
const str = "Hello";
console.log(str[0]); // "H"
console.log(str.length); // 5
작은따옴표, 큰따옴표, 백틱 모두 문자열을 만들 수 있다.
'foo'
"bar"
`baz`
특수 문자는 이스케이프 시퀀스로 표현한다.
"\xA9" // "©"
"\u00A9" // "©"
"\u{1F600}" // 😀
문자열 값은 곧바로 메서드를 호출할 수 있다.
"hello".toUpperCase(); // "HELLO"
종류별 예시:
"hello world".includes("world"); // true
" hi ".trim(); // "hi"
"na".repeat(3); // "nanana"
백틱(`)을 사용하면 문자열이 훨씬 유연해진다.
const name = "Jay";
const age = 28;
console.log(`My name is ${name}, I am ${age} years old.`);
// "My name is Jay, I am 28 years old."
장점 두 가지:
console.log(`line 1
line 2`);
const a = 5, b = 10;
console.log(`Fifteen is ${a + b}`); // "Fifteen is 15"
숫자와 문자열은 단순해 보여도, JavaScript에서는 이 둘을 다루기 위한 장치가 상당히 잘 갖춰져 있다.
대부분의 코드가 결국 이 두 타입을 주고받으며 움직이기 때문에, 여기서 다룬 도구들을 익숙하게 만들어두는 것이 큰 도움이 된다.