배열
배열은 값을 순서대로 저장하는 객체이다.
항목으로 이뤄진 목록만 저장할 때는 객체를 따로 만들 필요가 없고 배열을 이용하면 된다.
const fruitBasket = ['apple', 'banana', 'watermelon']
배열에 관련된 다양한 메서드들이 있다.
const fruitBasket = ['apple', 'banana', 'watermelon'];
console.log(fruitBasket.length); //3
fruitBasket.push('orange');
console.log(fruitBasket); //[ 'apple', 'banana', 'watermelon', 'orange' ]
fruitBasket.unshift('pear');
console.log(fruitBasket); //[ 'pear', 'apple', 'banana', 'watermelon', 'orange' ]
fruitBasket.pop();
console.log(fruitBasket); //[ 'pear', 'apple', 'banana', 'watermelon' ]
fruitBasket.shift();
console.log(fruitBasket); //[ 'apple', 'banana', 'watermelon' ]
또한 typeof()를 사용해 변수가 어떤 자료형인지 확인 가능하다.
const arr = ['apple'];
console.log(typeof(arr)); //object
const str = 'hihi';
console.log(typeof(str)); //string
const num = 4;
console.log(typeof(num)); //number
const obj = {color: 'red'};
console.log(typeof(obj)); //object
console.log(typeof(null)); //object ?? why not null?
console.log(typeof(undefined)); //undefined
배열은 원시 자료형이 아니라 객체이다!
+ null은 원시 자료형이라서 null이 떠야되는데 왜 object가 뜰까?
이는 자바스크립트의 오래된 버그이다. ㅋㅋ
자바스크립트가 처음 만들어질 때, typeof 연산자를 구현하면서 null을 객체로 잘못 분류하는 버그가 있었다. 너무 많은 코드에서 쓰이다 보니 고치면 기존 코드가 다 깨져서 지금까지도 그냥 유지되고 있다고 보면 된다.
따라서 정확하게 null 타입을 알아보기 위해서는 ===을 써야한다.
const value = null;
if (value === null) {
console.log("정확히 null입니다!");
}