[javascript] 변수와 타입
변수의 선언
변수는 다음과 같은 형식으로 선언할 수 있다.
[선언 키워드] [변수명] = [값]
= (등호)를 사용해 초기화하는게 필수는 아니다.
변수의 이름으로는 유니코드 문자셋을 사용하기 때문에 한글로 된 변수명이나 연산자가 아닌 특수문자 만으로도 이름을 사용할 수 있다.
변수의 선언 키워드는 다음 세 가지가 있다.
var
가장 기본적인 변수. 이 키워드로 선언된 변수는 기본적으로 전역 범위를 갖는다. 반복문이나 조건문, 함수 안에서 var를 사용해 선언된 변수는 해당 범위 바깥에서도 사용할 수 있다.
let
블록 범위 변수. 이 키워드로 선언된 변수는 기본적으로 블록 범위를 갖는다. 반복문이나 조건문, 함수 안에서 let을 사용해 선언된 변수는 해당 범위 바깥에서 사용될 수 없다.
const
블록 범위 상수형 변수. 이 키워드로 선언된 변수는 let과 똑같이 블록 범위를 가지며, 값을 변경할 수 없다.
원시타입
최신 문법에서는 변수에 할당할 수 있는 타입을 원시 타입 7가지와 여러 객체타입으로 제한한다.
Boolean
true와 false로 선언하며, 참과 거짓 값을 의미한다.
var isTrue = false;
console.log(isTrue); // false
isTrue = true;
console.log(isTrue); // true
Number
배정밀도 64비트 부동소수점 형식. 쉽게말해 −2^53부터 +2^53까지의 숫자를 의미하며, 소수도 Number에 해당한다.
var num = 9007199254740992; // 2의 53승
console.log(num);
var num = 9007199254740993;
console.log(num); //여기부터 근사치로 표현됨
BigInt
Number보다 범위가 큰 '정수'를 표현할 때 사용한다.
var big = 123456789012345678901234567890n;
String
길이가 있는 문자열. 인용부호 "나 '로 둘러싸야한다.
var s1 = "Hello"
var s2 = 'world'
Symbol
항상 고유함(primitive)이 보장되고 불변한 값. 주로 객체의 Key가 겹치지 않게 하기 위해 사용되며 Symbol() 함수로 생성한다.
let sym1 = Symbol();
let sym2 = Symbol();
console.log(sym1 === sym2); // sym1과 sym2는 서로 다름
let symA = Symbol("test");
let symB = Symbol("test");
console.log(symA === symB); // 항상 고유함이 보장됨
null과 undefined
둘 다 "값이 없음"을 표현할 때 사용하지만, 세부적인 사용처는 조금 다르다.
null
- 변수를 의도적으로 선언한 뒤 비워놓아야 할 때
- 함수에서 (원래는 반환을 해야 하지만)반환한 값이 없을때
undefined
- 변수를 선언만 함
- 함수가 무언가를 반환하지 않음
객체 타입
이외에는 전부 키-값 형태로 저장되는 '객체 타입'이다.
Object(JSON)
키-값 형태로 저장되며, 가변하다.
키는 string 또는 Symbol 형태여야 한다.
const obj = { "key1": "value1", "key2": 1234 }
console.log(obj.key1)
console.log(obj.key2)
Array(배열)
0개 이상의 변수를 담는 목록.
let datas = ["1234", 1234, { key: "1234" }]; // 한 배열에 여러 타입도 담을 수 있음
console.log(datas[0], datas[1], datas[2]); // 인덱싱 가능
함수, 클래스, etc...
reference
https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Grammar_and_types