JavaScript에서는 배열 길이가 가변적이므로 직접 정의하여 배열에 새 멤버를 추가할 수 있습니다.
var o = [2,3,5];
o[3] = 7;
console.log(o);//[2,3,5,7]
이 방법 외에도 push() 문을 사용하여 동일한 목적을 달성할 수도 있습니다.
o.push(11);
console.log(o);//[2,3,5,7,11]
o.push(13,17);
console.log(o);//[2,3,5,7,11,13,17]
배열 시작 부분에 새 멤버를 추가해야 하는 경우 unshift() 문을 사용할 수 있습니다.
o.unshift(2014);
console.log(o);//[2014,2,3,5,7,11,13,17]
o.unshift(2013, 2012);
console.log(o);//[2013,2012,2014, 2,3,5,7,11,13,17]
push()에 대응하여 배열 끝에서 멤버를 삭제해야 하는 경우 pop() 문을 사용할 수 있습니다. pop() 문은 삭제된 멤버를 반환하고 배열 길이는 1만큼 줄어듭니다.
var p = o.pop();
console.log(p);//17
console.log(o.length);//9
unshift()에 대응하여 배열의 시작 부분에서 멤버를 삭제해야 하는 경우 Shift() 문을 사용할 수 있습니다. Shift() 문은 삭제된 멤버를 반환하고 배열 길이는 1만큼 줄어듭니다.
var s = o.shift();
console.log(s);//2013
console.log(o.length);//8
Shift() 문과 pop() 문 외에도 delete 연산자를 통해 배열의 멤버를 삭제할 수도 있습니다. Shift() 및 pop()과 달리 배열의 길이 속성은 삭제 작업 후에도 변경되지 않습니다. 즉, 배열이 불연속됩니다.
배열의 길이 속성을 설정하여 JavaScript에서 배열을 수정할 수도 있습니다. 길이 값이 배열 멤버 수보다 작을 때 JavaScript는 길이 값이 배열 수보다 크면 배열을 가로챕니다. 멤버의 경우 JavaScript는 배열을 연속적이지 않음으로 변경합니다. 길이 값이 읽기 전용인 경우 배열에서 새 멤버를 직접 정의하면 실패합니다.
console.log(o);//[2012,2014, 2,3,5,7,11,13]
o.길이 = 2;
console.log(o);//[2012,2014]
o.길이 = 4;
console.log(o);//[2012,2014,정의되지 않음,정의되지 않음]
var a = [1,2,3];
Object.defineProperty(a, "length", {writable:false});
a[3] = 4;
console.log(a);//[1,2,3]