[소소한 개발 일지] 그렇게 쓰면서도 모르고 있던 push 메서드(js)

Explanation

엄청청.. 오랜만의 포스팅인거 같네요.
오늘은 나름 새로운 카테고리 ‘소소한 개발 일지’ 첫번째 포스팅이랍니다.
그냥 어째어째 몰랐다가 알게 된 간단한 글을 적어 볼 생각이에요.
그리고 그 첫번째 주제는 바로 자바스크립트의 Push 메서드입니다.

1. 간단한 문제!

정답은 무엇일까요??

정답은 3 이랍니다.

이 포스팅의 핵심은 push 메서드의 리턴값이 배열의 최종 length 값을 리턴한다는 사실이랍니다.
저는 그동안 push를 참 많이 사용했던 것 같은데, 이 사실을 이제야 알았네요. (…)

2. push와 concat

사실 1번으로 적고자 한 내용은 다 적었는데,
너무 글이 짧은 것 같아서, 간단히 concat과 push에 대해 적어보려해요.
우선 push는 ECMAScript 3판에 정의 된 메서드로 엄청청 오래 된 메서드에요.(1999년)
그리고 concat은 똑같이 ECMA Script 3판에 초기정의 되었답니다. (으잉?)

헐… 전 concat을 reduce, map, filter를 쓰면서부터 사용하기 시작해서 당연히 ECMAScript 5.1에서 정의되었는 줄 알았네요..

다들 알고 계시겠지만, push는 대상 객체에 직접 값을 추가하고, concat은 인자로 받은 값을 추가한 새로운 배열을 만든다는 차이가 있답니다.
그리고 조금 더 차이가 있다면, concat은 Array의 프로토타입으로 있으면서 String의 프로토타입으로도 있답니다. 그래서 아래와 같이 사용할 수도 있답니다.

그런데 + 연산자가 훨씬 성능이 좋아서 크게 쓰이진 않을 것 같아요.

성능테스트 참고 링크
https://web.archive.org/web/20170404182053/https://jsperf.com/concat-vs-plus-vs-join