엄청 편한 배열을 사용하는 법을 숙지해보자.
// 배열 생성 (빈 배열)
var arr1 = [];
// 배열 생성 (초기값)
var arr2 = [1,2,3];
// 배열 생성 (배열 크기)
var arr3 = [,,,,]; // 값은 할당되어 있지 않음
// 배열 생성 (빈 배열)
var arr1 = new Array();
// 초기값을 지정하여 생성
var arr2 = new Array(1,2,3);
// 배열 크기를 지정하여 생성
var arr3 = new Array(3);
배열 리터럴을 사용하여 생성하는 방법과 Array() 생성자 함수를 사용하여 생성하는 방법의 거의 동일하다. 배열 리터럴을 사용하여 배열을 생성하더라도 내부적으로 Array() 생성자 함수를 사용하여 생성하므로 기능상의 차이는 없으며, 배열 리터를이 조금 더 간소화된 문법이다.
자바스크립트에서는 배열을 사용 시 배열 리터럴([])을 사용할 것을 권장 한다.
literal의 사용을 권장하는데는 몇가지 이유가 있다.
1. 리터럴이 간견하다
2. 자바스크립트 객체가 클래스 문법으로 생성된다는 오해 방지
3. 생성자 함수는 인자를 받을 수 있는데, 부작용(사이드 이펙트)의 우려가 있음
4. 생성자를 안 쓰면 유효 범위 판별 작업도 발생하지 않음
var array = [1,2,3];
array.map(function(x){
return x+1;
}); // [2,3,4]
배열의 항목들을 반복하면서 조건을 수행한다.
javaScript에서 배열은 객체이다. 하지만 배열의 프로토타입은 Array.Prototype 이다.
var array = [1,2,3];
var obj = {'one' : 1 , 'two' : 2};
console.log(typeof(array)); // object
console.log(typeof(obj)); // object
객체에 length라는 프로퍼티를 선언하면 어떻게될까? JavaScript에서는 이러한 객체를 유사배열객체(array-like-objects)라고 부른다. 유사배열객체는 배열처럼 length 프로퍼티를 갖고 있지만 배열이 아닌 객체이다.
var obj = {
'0':'zero',
'1':'two'
}
obj.length = 2;
var arr = Array.prototype.slice.apply(obj);
arr.push('three'); // 오류가 발생하지 않음.