let 키워드는 ES6에서 도입된 변수 선언 방식이다. let으로 선언된 변수는 블록 스코프(block scope)를 가지며, 이는 변수가 선언된 블록 내에서만 유효함을 의미한다.
let globalName = "global name";
{
let name = "geon";
console.log(name); // geon
name = "hello";
console.log(name); // hello
console.log(globalName); // global name
}
console.log(globalName); // global name
var는 이전에 널리 사용되던 변수 선언 방식이다. 현재는 사용하지 않는다.
javascript
Copy code
{
age = 4;
var age;
}
console.log(age);
const는 상수를 선언하는 키워드로, 한 번 값이 할당되면 변경할 수 없다. 보안, 스레드 안전성, 인간의 실수를 줄이는 데에 유리하다.
const daysInWeek = 7;
const maxNumber = 5;
JavaScript는 다양한 타입의 값을 지원한다.
JavaScript에서는 정수와 실수를 구분하지 않고 모두 number 타입으로 취급한다.
const count = 17;
const size = 17.1;
console.log(`value: ${count}, type: ${typeof count}`); // value: 17, type: number
console.log(`value: ${size}, type: ${typeof size}`); // value: 17.1, type: number
Infinity, -Infinity, NaN과 같은 특수 숫자 값도 지원한다.
const infinity = 1 / 0;
const negativeInfinity = -1 / 0;
const nAn = "not a number" / 2;
console.log(infinity); // Infinity
console.log(negativeInfinity); // -Infinity
console.log(nAn); // NaN
BigInt는 매우 큰 정수를 다룰 때 사용한다. 아직은 새로운 타입이므로 사용에 주의가 필요하다.
const bigInt = 123123123123123123123123123123123123123123123n;
console.log(`value: ${bigInt}, type: ${typeof bigInt}`); // value: 123123123123123123123123123123123123123123123n type: bigint
문자열은 string 타입으로 처리되며, 템플릿 리터럴을 사용하여 문자열을 편리하게 조합할 수 있다.
const char = "c";
const brendan = "brendan";
const greeting = "hello " + brendan;
console.log(`value: ${greeting}, type: ${typeof greeting}`); // value: hello brendan, type: string
const helloBob = `hi ${brendan}!`; // template literals (string)
console.log(`value: ${helloBob}, type: ${typeof helloBob}`); // value: hi brendan!, string
참(true) 또는 거짓(false)을 나타내는 boolean 타입은 조건문 등에서 유용하게 사용된다.
const canRead = true;
const test = 3 < 1;
console.log(`value: ${canRead}, type: ${typeof canRead}`); // value: true, type: boolean
console.log(`value: ${test}, type: ${typeof test}`); // value: false, type: boolean
null은 명시적으로 값이 없음을 나타내는 반면, undefined는 값이 할당되지 않은 상태를 의미한다.
let nothing = null;
let x;
console.log(`value: ${nothing}, type: ${typeof nothing}`); // value: null, type: object
console.log(`value: ${x}, type: ${typeof x}`); // value: undefined, type: undefined
Symbol은 고유하고 변경할 수 없는 값으로, 주로 객체의 고유 식별자로 사용된다.
const symbol1 = Symbol("id");
const symbol2 = Symbol("id");
console.log(symbol1 === symbol2); // false
JavaScript에서 객체는 데이터와 기능을 하나의 단위로 묶는 중요한 구조이다.
const geon = { name: "geon", age: 20 };
geon.age = 21;
JavaScript는 동적 타입 언어이므로, 변수의 타입은 런타임에 결정되며 변경될 수 있다.
let text = "hello";
text = 1;
text = "7" + 5;
text = "8" / "2";
console.log(`value: ${text}, type: ${typeof text}`); // value: 4, type: number