
배열
배열은 객체이다.
배열을 선언하는 방법은 두가지다.
let arr = new Array();
let arr = [];
let arr = ['abc', {name:'1313'}, false, function(){ return 'not'}];
배열은 기본적으로 Queue, Stack이란 자료구조를 지원한다.
Queue는 push, shift
Stack는 push, pop
으로 구현할 수 있다.
단순히 Stack, Queue를 구현하려고 하지 않아도 push, shift, pop 함수를 사용할 수 있다.
push : 배열의 끝에 요소를 추가한다.
pop : 배열의 끝 요소를 제거하고 제거한 요소를 반환한다.
shift : 배열의 앞(첫번째) 요소를 제거하고 제거한 요소를 반환한다.
unshift : 배열의 앞에 요소를 추가한다.
arr[0]같은 방식은 객체 문법에서 왔다고 한다.예제
let fruits = ['바나나는 맛있어'];
let copy = fruits;
console.log(fruits === copy); // true
fruits.push('사과도 맛있어');
console.log(copy); // 바나나는 맛있어, 사과도 맛있어
인접한 메모리 공간에 차례로 저장해 연산 속도를 높인다!let fruits = [];
fruits[131313] = 5;
fruits.power = 99999999; // 배열은 객체당
위와 같은 상황에서는 배열이 배열답지 않게 동작하게 되어 제대로 사용할 때와 다르게 최적화 되지 않는다.
순서가 있는 자료를 저장하기 위한 용도로 만들어진 자료구조이며,순서가 있는 자료구조를 사용하지 않는다면 객체를 사용하는걸 권장!push, pop는 빠르고 shift, unshift는 느리다.배열의 전용 반복문이 있다.
바로 for..of~~!!! -- 근데 나는 map을 더 쓴다.
for..in과의 차이점? -- 'property', 객체를 위한 반복문이다
length Property배열의 length 는 자동으로 갱신된다. (위에 push, pop 을 사용할 때 참조)
length = 0let arr = new Array(100);
console.log(arr[99]); // 결과는?
배열객체에는 toString메서드가 구현되어 있으며, 호출하면 배열의 모든 요소를 쉼표로 구분한 문자열이 반환된다.

배열에는 Symbol.toPrimitive, valueOf 메서드가 없기 때문에, 배열은 형 변환이 일어날 때 문자열로 변환됩니다.
