length 프로퍼티를 가진 객체를 유사 배열 객체(array-like objects)라고 한다. 객체임에도 불구하고, 자바스크립트의 표준 배열 메서드를 사용하는 게 가능하다.
var arr = ['array1'];
var obj = { name: 'object1', length: 1 };
arr.push('array2');
console.log(arr); // ['array1', 'array2']
Array.prototype.push.apply(obj, ['array2']);
console.log(obj); // { '1': 'array2', name: 'object1', length: 2 }
JS에서는 함수를 호출할 때 인수들과 함께 암묵적으로 arguments 객체가 함수 내부로 전달된다.
arguments 객체는 함수를 호출할 때 넘긴 인자들이 배열 형태로 저장된 객체(유사 배열 객체)를 의미한다.
arguments 객체는 매개변수가 개수가 정확하게 정해지지 않은 함수를 구현하거나, 전달된 인자의 개수에 따라 서로 다른 처리를 해줘야 하는 함수를 개발하는 데 유용하다.
function sum() {
var result = 0;
for(var i = 0; i < arguments.length; i++){
result += arguments[i]
}
return result;
}
sum(1,2,3); // 6