기본 콘텐츠로 건너뛰기

라벨이 arguments인 게시물 표시

arguments 파해치기.

 사실 arguments는 그리 자주 쓰는 객체는 아니다. 하지만 화살표 함수( arraow function )를 배우는 사람이라면 화살표 함수( () => {} ) arguments가 없다는 설명을 들은 적은 있을 것이다.  오늘은 arguments가 어떤 속성을 가지고 있는지, 또 어떤 상황에서 사용 할 수 있을지 확인 해보도록 하자. 예제 코드를 위주로 다룰 터이니 한 번 살펴보고 적절한 상황에서 사용해보자.  arguments? function foo (a , b) { console . log (a , b) // 1 2 console . log (arguments) // Arguments(2) [1, 2, callee: ƒ, Symbol(Symbol.iterator): ƒ] } foo ( 1 , 2 )  일반 함수(function)에서 사용 할 수 있는 객체로 함수 호출시의 인자들을 확인 할 수 있다.  => a, b는 매개변수(parameter) foo( 1, 2 ) 인자(argument)라고 보면 된다.  함수 호출 시의 값을 알 수 있기에,  function foo (a , b) { console . log (a , b) // 1 2 console . log (arguments) // Arguments(2) [1, 2, 3, callee: ƒ, Symbol(Symbol.iterator): ƒ] } foo ( 1 , 2 , 3 )  위와 같이 정의 되지 않은 매개변수도 받을 수 있다.  arguments.length  arguments는 길이를 가지고 있다. 인자의 갯수를 알려준다. 하지만 배열은 아니다. 정확히는 키와 값을 가지고 있는 Map에 더 가까운 구조를 가지고 있다. 아래의 JSON.stringify만 보더라도 확인이 가능하다. function foo (a , b) { console . l...

arguments가 뭐야?

 es6를 배우다 보면 뭐 물론... 지금은 자바스크립트겠지만... arrow function과 일반 function의 차이로 arguments가 없다라는 문장을 항상 볼 수 있다.  그런데... 배우는 입장에서 arguments? 그게 뭔데? 라는 생각을 해본적이 있을 것이다. 딱히 알았다고 해도 이걸 어따 쓰지... 이 생각도 들었을 것이다. 일단 parmeter와 argument의 차이를 알자. function foo (bar) { console . log (bar) } foo ( 3 )  위의 함수는 뭐 설명하기도 민망한 함수를 만들어 보았다. 뭐 설명 하는데 어려운 코드가 필요 한것은 아니니. foo를 3이라는 인자(argument)로 호출 하였다. foo라는 함수는 bar라는 매개변수(paramter) 를 console.log의 인자로 이용하여 호출 하고 있다.  자 여기서 arguments와 parameter는 큰 차이를 갖는다. function foo (bar) { console . log (bar) // 1 console . log (arguments) // Arguments(3) [1, 2, 3, callee: ƒ, Symbol(Symbol.iterator): ƒ] } foo ( 1 , 2 , 3 ) parameter bar를 이용해서는 하나의 값만 갖지만, arguments로 접근하여 Arguments 객체에 1, 2, 3값이 있는 것을 볼수있다. Arguments는 유사배열이라고 보면 된다. 인덱스가 있고, length가 있으며 iterable protocol을 만족 하고 있다. 여기서 특이한 호출 방법을 알려주자면 아래와 같다. function foo (bar) { console . log (bar) // 1 console . log (arguments) // Arguments(3) [1, 2, 3, callee: ƒ, Symbol(S...