cbw1030
기록하는 공간
cbw1030
전체 방문자
오늘
어제
  • 전체보기 (101)
    • Programming (99)
      • Java (19)
      • Servlet (10)
      • Spring Framework (13)
      • Javascript (22)
      • AWS (2)
      • 네트워크 (8)
      • 데이터베이스 (13)
      • 리눅스 (3)
      • 블록체인 (7)
      • 용어 정리 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 데이터분석
  • Brightics
  • 크롤링
  • 브라이틱스 스튜디오
  • 인공지능
  • 삼성SDS
  • 데이터 사이언스
  • web
  • 머신러닝
  • 브라이틱스 튜토리얼
  • 삼성SDS 브라이틱스
  • Brightics Studio
  • react
  • 생활코딩
  • 차원축소
  • 브라이틱스 스튜디오 사용법
  • 브라이틱스
  • Brightics AI
  • javascript
  • beautifulsoup

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
cbw1030

기록하는 공간

[Javascript]  유사배열 arguments 객체
Programming/Javascript

[Javascript] 유사배열 arguments 객체

2019. 2. 17. 23:10
반응형

유사배열(Array-like)이란? 

배열처럼 index를 통해 접근 가능한 것을 유사배열이라고 한다.


arguments?

자바스크립트에서는 인자를 포함해 함수를 호출할 때 암묵적으로 arguments가 생성된다.

정확히 말하자면 arguments 객체이다.  arguments 객체는 함수를 호출할 때 넣었던 인자들이 배열 형태로 저장되어 있다.

하지만, 배열과 다르게 유사배열이 때문에 배열 메소드를 사용할 수 없다. (length, index를 통한 접근은 가능)

function arrayLike(a, b) {

for (var i = 0; i < arguments.length; i++) {

console.log(arguments[i]);

}

}


arrayLike(3, 4, 5, 6) // 3 ~ 6 까지 차례대로 출력된다.


만약에 배열 메소드를 사용한다면 어떻게 될까?



위와 같이 TypeError가 발생한다.



그런데 가끔 코딩을 하다가 arguments 객체를 유사배열이 아닌 배열로 이용해야 할 경우가 생긴다.

물론 빈 배열을 만들고 for문을 돌려 push를 하면 만들 수 있긴 하지만 한 줄로 끝낼 수 있는 좋은(?) 구문이 있다.

바로 Array.prototype.slice.call(arguments)이다.


이 부분을 이해하려면 call()과 apply()의 개념 이해가 필요하다.(업로드 예정)

function foo(a, b) { var arg = Array.prototype.slice.call(arguments); arg.forEach(function(el, index, array) { array[index] += 100; }); console.log(arg); }

foo(1, 2) // [101, 102]

위와 같이 변수 arg는 꼼수(?)를 통해 arguments를 배열로 만들었기 때문에 배열 메소드 forEach를 사용할 수 있다.





p.s. 잘못된 내용이 있다면 댓글 남겨주시면 감사드리겠습니다.

반응형
저작자표시 (새창열림)

'Programming > Javascript' 카테고리의 다른 글

[Javascript] this 이것은 무엇인가  (0) 2019.02.25
[Javascript] hoisting & scope 호이스팅과 스코프 (ES5, ES6 비교)  (0) 2019.02.25
[Javascript] insertAdjacentElement 함수에 대해 알아보자  (0) 2019.02.20
[Javascript] Rest 파라미터  (0) 2019.02.18
[Javascript] 유용한 배열 메서드 6가지(forEach, map, some, every, filter, reduce)  (0) 2019.02.18
    'Programming/Javascript' 카테고리의 다른 글
    • [Javascript] hoisting & scope 호이스팅과 스코프 (ES5, ES6 비교)
    • [Javascript] insertAdjacentElement 함수에 대해 알아보자
    • [Javascript] Rest 파라미터
    • [Javascript] 유용한 배열 메서드 6가지(forEach, map, some, every, filter, reduce)
    cbw1030
    cbw1030

    티스토리툴바