Estrella'sdevelopment blog

Frontend infoInformations about frontend

Server infoinformations about server

Database infoinformations about database

ETCNews that is related to software

Basic infobasic information about software

Searchsearch posts

I'm also on

Githubif you see my interests

Javascript 의 arguments


arguments는 배열처럼 보이지만 배열은 아닌 함수의 지역변수이다.

함수가 실행되면 arguments가 생성된다.


function a(){
    console.log(arguments);
    console.log(arguements.length);
}
a(1,2,3,4); //[ 1,2,3,4, callee: ƒ, Symbol(Symbol.iterator): ƒ ]  , 4

a(); // [callee: ƒ, Symbol(Symbol.iterator): ƒ] , 0

arguments는 배열은 아니지만 length 프로퍼티를 가지고 있는 object다.

따라서 arguments는 pop메소드를 가지고 있지 않다. 그러나 array처럼 만들어줄 수 있다.


var args = [ ...arguments];

a(1,2,3,4); // [1,2,3,4];

위와 같이 es6문법에서 등장한 전개 연산자를 이용해서 배열로 만들어줄 수 있고,

var args = Array.prototype.slice.call(arguments);

a(1,2,3); //[1,2,3];

slice메소드로 배열로 만들어줄 수 있다.

그러나 자바스크립트엔진 최적화에 있어서 기피된다.

arguments 속성으로는

arguments.callee : 현재 실행중인 함수를 가리킨다. arguments.caller : 현재 실행중인 함수를 호출한 함수를 가리킨다. arguments.length가 있다.